/**
 * File:   image_dither.c
 * Author: AWTK Develop Team
 * Brief:  bitmap image generator
 *
 * Copyright (c) 2018 - 2020  Guangzhou ZHIYUAN Electronics Co.,Ltd.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * License file for more details.
 *
 */

/**
 * History:
 * ================================================================
 * 2020-05-26 Luo ZhiMing <luozhiming@zlg.cn> created
 *
 */

#include "tkc/mem.h"
#include "tkc/color.h"
#include "base/bitmap.h"
#include "base/types_def.h"

#define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
#define STB_IMAGE_RESIZE_IMPLEMENTATION

#include "stb/stb_image.h"

#ifndef WITH_STB_IMAGE
#include "stb/stb_image_write.h"
#else
extern int stbi_write_png(char const* filename, int x, int y, int comp, const void* data,
                          int stride_bytes);
#endif /*WITH_STB_IMAGE*/

typedef void (*set_dst_data_func_t)(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a);

static const int32_t best_red_table[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4,  5,  5,  5,  5,  5,  5,
    5,  5,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,
    8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9,  10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,
    11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
    14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17,
    17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20,
    20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
    23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26,
    26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28,
    29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31,
    31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
    31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31};
static const int32_t(*best_blue_table) = best_red_table;
static const int32_t best_greed_table[] = {
    0,  0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,  9,  10, 10, 10, 10, 11, 11, 11,
    11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17,
    17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23,
    23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29,
    29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35,
    35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41,
    41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47,
    47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52,
    53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58,
    59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63,
    63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
    63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63};

static const int32_t error_red_table[][32] = {
    {0,    -8,   -16,  -24,  -33,  -41,  -49,  -57,  -66,  -74,  -82,
     -90,  -99,  -107, -115, -123, -132, -140, -148, -156, -165, -173,
     -181, -189, -198, -206, -214, -222, -231, -239, -247, -256},
    {1,    -7,   -15,  -23,  -32,  -40,  -48,  -56,  -65,  -73,  -81,
     -89,  -98,  -106, -114, -122, -131, -139, -147, -155, -164, -172,
     -180, -188, -197, -205, -213, -221, -230, -238, -246, -255},
    {2,    -6,   -14,  -22,  -31,  -39,  -47,  -55,  -64,  -72,  -80,
     -88,  -97,  -105, -113, -121, -130, -138, -146, -154, -163, -171,
     -179, -187, -196, -204, -212, -220, -229, -237, -245, -254},
    {3,    -5,   -13,  -21,  -30,  -38,  -46,  -54,  -63,  -71,  -79,
     -87,  -96,  -104, -112, -120, -129, -137, -145, -153, -162, -170,
     -178, -186, -195, -203, -211, -219, -228, -236, -244, -253},
    {4,    -4,   -12,  -20,  -29,  -37,  -45,  -53,  -62,  -70,  -78,
     -86,  -95,  -103, -111, -119, -128, -136, -144, -152, -161, -169,
     -177, -185, -194, -202, -210, -218, -227, -235, -243, -252},
    {5,    -3,   -11,  -19,  -28,  -36,  -44,  -52,  -61,  -69,  -77,
     -85,  -94,  -102, -110, -118, -127, -135, -143, -151, -160, -168,
     -176, -184, -193, -201, -209, -217, -226, -234, -242, -251},
    {6,    -2,   -10,  -18,  -27,  -35,  -43,  -51,  -60,  -68,  -76,
     -84,  -93,  -101, -109, -117, -126, -134, -142, -150, -159, -167,
     -175, -183, -192, -200, -208, -216, -225, -233, -241, -250},
    {7,    -1,   -9,   -17,  -26,  -34,  -42,  -50,  -59,  -67,  -75,
     -83,  -92,  -100, -108, -116, -125, -133, -141, -149, -158, -166,
     -174, -182, -191, -199, -207, -215, -224, -232, -240, -249},
    {8,    0,    -8,   -16,  -25,  -33,  -41,  -49,  -58,  -66,  -74,
     -82,  -91,  -99,  -107, -115, -124, -132, -140, -148, -157, -165,
     -173, -181, -190, -198, -206, -214, -223, -231, -239, -248},
    {9,    1,    -7,   -15,  -24,  -32,  -40,  -48,  -57,  -65,  -73,
     -81,  -90,  -98,  -106, -114, -123, -131, -139, -147, -156, -164,
     -172, -180, -189, -197, -205, -213, -222, -230, -238, -247},
    {10,   2,    -6,   -14,  -23,  -31,  -39,  -47,  -56,  -64,  -72,
     -80,  -89,  -97,  -105, -113, -122, -130, -138, -146, -155, -163,
     -171, -179, -188, -196, -204, -212, -221, -229, -237, -246},
    {11,   3,    -5,   -13,  -22,  -30,  -38,  -46,  -55,  -63,  -71,
     -79,  -88,  -96,  -104, -112, -121, -129, -137, -145, -154, -162,
     -170, -178, -187, -195, -203, -211, -220, -228, -236, -245},
    {12,   4,    -4,   -12,  -21,  -29,  -37,  -45,  -54,  -62,  -70,
     -78,  -87,  -95,  -103, -111, -120, -128, -136, -144, -153, -161,
     -169, -177, -186, -194, -202, -210, -219, -227, -235, -244},
    {13,   5,    -3,   -11,  -20,  -28,  -36,  -44,  -53,  -61,  -69,
     -77,  -86,  -94,  -102, -110, -119, -127, -135, -143, -152, -160,
     -168, -176, -185, -193, -201, -209, -218, -226, -234, -243},
    {14,   6,    -2,   -10,  -19,  -27,  -35,  -43,  -52,  -60,  -68,
     -76,  -85,  -93,  -101, -109, -118, -126, -134, -142, -151, -159,
     -167, -175, -184, -192, -200, -208, -217, -225, -233, -242},
    {15,   7,    -1,   -9,   -18,  -26,  -34,  -42,  -51,  -59,  -67,
     -75,  -84,  -92,  -100, -108, -117, -125, -133, -141, -150, -158,
     -166, -174, -183, -191, -199, -207, -216, -224, -232, -241},
    {16,   8,    0,    -8,   -17,  -25,  -33,  -41,  -50,  -58,  -66,
     -74,  -83,  -91,  -99,  -107, -116, -124, -132, -140, -149, -157,
     -165, -173, -182, -190, -198, -206, -215, -223, -231, -240},
    {17,   9,    1,    -7,   -16,  -24,  -32,  -40,  -49,  -57,  -65,
     -73,  -82,  -90,  -98,  -106, -115, -123, -131, -139, -148, -156,
     -164, -172, -181, -189, -197, -205, -214, -222, -230, -239},
    {18,   10,   2,    -6,   -15,  -23,  -31,  -39,  -48,  -56,  -64,
     -72,  -81,  -89,  -97,  -105, -114, -122, -130, -138, -147, -155,
     -163, -171, -180, -188, -196, -204, -213, -221, -229, -238},
    {19,   11,   3,    -5,   -14,  -22,  -30,  -38,  -47,  -55,  -63,
     -71,  -80,  -88,  -96,  -104, -113, -121, -129, -137, -146, -154,
     -162, -170, -179, -187, -195, -203, -212, -220, -228, -237},
    {20,   12,   4,    -4,   -13,  -21,  -29,  -37,  -46,  -54,  -62,
     -70,  -79,  -87,  -95,  -103, -112, -120, -128, -136, -145, -153,
     -161, -169, -178, -186, -194, -202, -211, -219, -227, -236},
    {21,   13,   5,    -3,   -12,  -20,  -28,  -36,  -45,  -53,  -61,
     -69,  -78,  -86,  -94,  -102, -111, -119, -127, -135, -144, -152,
     -160, -168, -177, -185, -193, -201, -210, -218, -226, -235},
    {22,   14,   6,    -2,   -11,  -19,  -27,  -35,  -44,  -52,  -60,
     -68,  -77,  -85,  -93,  -101, -110, -118, -126, -134, -143, -151,
     -159, -167, -176, -184, -192, -200, -209, -217, -225, -234},
    {23,   15,   7,    -1,   -10,  -18,  -26,  -34,  -43,  -51,  -59,
     -67,  -76,  -84,  -92,  -100, -109, -117, -125, -133, -142, -150,
     -158, -166, -175, -183, -191, -199, -208, -216, -224, -233},
    {24,   16,   8,    0,    -9,   -17,  -25,  -33,  -42,  -50,  -58,
     -66,  -75,  -83,  -91,  -99,  -108, -116, -124, -132, -141, -149,
     -157, -165, -174, -182, -190, -198, -207, -215, -223, -232},
    {25,   17,   9,    1,    -8,   -16,  -24,  -32,  -41,  -49,  -57,
     -65,  -74,  -82,  -90,  -98,  -107, -115, -123, -131, -140, -148,
     -156, -164, -173, -181, -189, -197, -206, -214, -222, -231},
    {26,   18,   10,   2,    -7,   -15,  -23,  -31,  -40,  -48,  -56,
     -64,  -73,  -81,  -89,  -97,  -106, -114, -122, -130, -139, -147,
     -155, -163, -172, -180, -188, -196, -205, -213, -221, -230},
    {27,   19,   11,   3,    -6,   -14,  -22,  -30,  -39,  -47,  -55,
     -63,  -72,  -80,  -88,  -96,  -105, -113, -121, -129, -138, -146,
     -154, -162, -171, -179, -187, -195, -204, -212, -220, -229},
    {28,   20,   12,   4,    -5,   -13,  -21,  -29,  -38,  -46,  -54,
     -62,  -71,  -79,  -87,  -95,  -104, -112, -120, -128, -137, -145,
     -153, -161, -170, -178, -186, -194, -203, -211, -219, -228},
    {29,   21,   13,   5,    -4,   -12,  -20,  -28,  -37,  -45,  -53,
     -61,  -70,  -78,  -86,  -94,  -103, -111, -119, -127, -136, -144,
     -152, -160, -169, -177, -185, -193, -202, -210, -218, -227},
    {30,   22,   14,   6,    -3,   -11,  -19,  -27,  -36,  -44,  -52,
     -60,  -69,  -77,  -85,  -93,  -102, -110, -118, -126, -135, -143,
     -151, -159, -168, -176, -184, -192, -201, -209, -217, -226},
    {31,   23,   15,   7,    -2,   -10,  -18,  -26,  -35,  -43,  -51,
     -59,  -68,  -76,  -84,  -92,  -101, -109, -117, -125, -134, -142,
     -150, -158, -167, -175, -183, -191, -200, -208, -216, -225},
    {32,   24,   16,   8,    -1,   -9,   -17,  -25,  -34,  -42,  -50,
     -58,  -67,  -75,  -83,  -91,  -100, -108, -116, -124, -133, -141,
     -149, -157, -166, -174, -182, -190, -199, -207, -215, -224},
    {33,  25,   17,   9,    0,    -8,   -16,  -24,  -33,  -41,  -49,  -57,  -66,  -74,  -82,  -90,
     -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -189, -198, -206, -214, -223},
    {34,  26,   18,   10,   1,    -7,   -15,  -23,  -32,  -40,  -48,  -56,  -65,  -73,  -81,  -89,
     -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -188, -197, -205, -213, -222},
    {35,  27,   19,   11,   2,    -6,   -14,  -22,  -31,  -39,  -47,  -55,  -64,  -72,  -80,  -88,
     -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -187, -196, -204, -212, -221},
    {36,  28,   20,   12,   3,    -5,   -13,  -21,  -30,  -38,  -46,  -54,  -63,  -71,  -79,  -87,
     -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -186, -195, -203, -211, -220},
    {37,  29,   21,   13,   4,    -4,   -12,  -20,  -29,  -37,  -45,  -53,  -62,  -70,  -78,  -86,
     -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -185, -194, -202, -210, -219},
    {38,  30,   22,   14,   5,    -3,   -11,  -19,  -28,  -36,  -44,  -52,  -61,  -69,  -77,  -85,
     -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -184, -193, -201, -209, -218},
    {39,  31,   23,   15,   6,    -2,   -10,  -18,  -27,  -35,  -43,  -51,  -60,  -68,  -76,  -84,
     -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -183, -192, -200, -208, -217},
    {40,  32,   24,   16,   7,    -1,   -9,   -17,  -26,  -34,  -42,  -50,  -59,  -67,  -75,  -83,
     -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -182, -191, -199, -207, -216},
    {41,  33,  25,   17,   8,    0,    -8,   -16,  -25,  -33,  -41,  -49,  -58,  -66,  -74,  -82,
     -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -181, -190, -198, -206, -215},
    {42,  34,  26,   18,   9,    1,    -7,   -15,  -24,  -32,  -40,  -48,  -57,  -65,  -73,  -81,
     -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -180, -189, -197, -205, -214},
    {43,  35,  27,   19,   10,   2,    -6,   -14,  -23,  -31,  -39,  -47,  -56,  -64,  -72,  -80,
     -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -179, -188, -196, -204, -213},
    {44,  36,  28,   20,   11,   3,    -5,   -13,  -22,  -30,  -38,  -46,  -55,  -63,  -71,  -79,
     -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -178, -187, -195, -203, -212},
    {45,  37,  29,   21,   12,   4,    -4,   -12,  -21,  -29,  -37,  -45,  -54,  -62,  -70,  -78,
     -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -177, -186, -194, -202, -211},
    {46,  38,  30,   22,   13,   5,    -3,   -11,  -20,  -28,  -36,  -44,  -53,  -61,  -69,  -77,
     -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -176, -185, -193, -201, -210},
    {47,  39,  31,   23,   14,   6,    -2,   -10,  -19,  -27,  -35,  -43,  -52,  -60,  -68,  -76,
     -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -175, -184, -192, -200, -209},
    {48,  40,  32,   24,   15,   7,    -1,   -9,   -18,  -26,  -34,  -42,  -51,  -59,  -67,  -75,
     -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -174, -183, -191, -199, -208},
    {49,  41,  33,  25,   16,   8,    0,    -8,   -17,  -25,  -33,  -41,  -50,  -58,  -66,  -74,
     -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -173, -182, -190, -198, -207},
    {50,  42,  34,  26,   17,   9,    1,    -7,   -16,  -24,  -32,  -40,  -49,  -57,  -65,  -73,
     -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -172, -181, -189, -197, -206},
    {51,  43,  35,  27,   18,   10,   2,    -6,   -15,  -23,  -31,  -39,  -48,  -56,  -64,  -72,
     -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -171, -180, -188, -196, -205},
    {52,  44,  36,  28,   19,   11,   3,    -5,   -14,  -22,  -30,  -38,  -47,  -55,  -63,  -71,
     -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -170, -179, -187, -195, -204},
    {53,  45,  37,  29,   20,   12,   4,    -4,   -13,  -21,  -29,  -37,  -46,  -54,  -62,  -70,
     -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -169, -178, -186, -194, -203},
    {54,  46,  38,  30,   21,   13,   5,    -3,   -12,  -20,  -28,  -36,  -45,  -53,  -61,  -69,
     -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -168, -177, -185, -193, -202},
    {55,  47,  39,  31,   22,   14,   6,    -2,   -11,  -19,  -27,  -35,  -44,  -52,  -60,  -68,
     -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -167, -176, -184, -192, -201},
    {56,  48,  40,  32,   23,   15,   7,    -1,   -10,  -18,  -26,  -34,  -43,  -51,  -59,  -67,
     -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -166, -175, -183, -191, -200},
    {57,  49,  41,  33,  24,   16,   8,    0,    -9,   -17,  -25,  -33,  -42,  -50,  -58,  -66,
     -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -165, -174, -182, -190, -199},
    {58,  50,  42,  34,  25,   17,   9,    1,    -8,   -16,  -24,  -32,  -41,  -49,  -57,  -65,
     -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -164, -173, -181, -189, -198},
    {59,  51,  43,  35,  26,   18,   10,   2,    -7,   -15,  -23,  -31,  -40,  -48,  -56,  -64,
     -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -163, -172, -180, -188, -197},
    {60,  52,  44,  36,  27,   19,   11,   3,    -6,   -14,  -22,  -30,  -39,  -47,  -55,  -63,
     -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -162, -171, -179, -187, -196},
    {61,  53,  45,  37,  28,   20,   12,   4,    -5,   -13,  -21,  -29,  -38,  -46,  -54,  -62,
     -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -161, -170, -178, -186, -195},
    {62,  54,  46,  38,  29,   21,   13,   5,    -4,   -12,  -20,  -28,  -37,  -45,  -53,  -61,
     -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -160, -169, -177, -185, -194},
    {63,  55,  47,  39,  30,   22,   14,   6,    -3,   -11,  -19,  -27,  -36,  -44,  -52,  -60,
     -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -159, -168, -176, -184, -193},
    {64,  56,  48,  40,  31,   23,   15,   7,    -2,   -10,  -18,  -26,  -35,  -43,  -51,  -59,
     -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -158, -167, -175, -183, -192},
    {65,  57,  49,  41,  32,   24,   16,   8,    -1,   -9,   -17,  -25,  -34,  -42,  -50,  -58,
     -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -157, -166, -174, -182, -191},
    {66,  58,  50,  42,  33,  25,   17,   9,    0,    -8,   -16,  -24,  -33,  -41,  -49,  -57,
     -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -190},
    {67,  59,  51,  43,  34,  26,   18,   10,   1,    -7,   -15,  -23,  -32,  -40,  -48,  -56,
     -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -189},
    {68,  60,  52,  44,  35,  27,   19,   11,   2,    -6,   -14,  -22,  -31,  -39,  -47,  -55,
     -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -188},
    {69,  61,  53,  45,  36,  28,   20,   12,   3,    -5,   -13,  -21,  -30,  -38,  -46,  -54,
     -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -187},
    {70,  62,  54,  46,  37,  29,   21,   13,   4,    -4,   -12,  -20,  -29,  -37,  -45,  -53,
     -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -186},
    {71,  63,  55,  47,  38,  30,   22,   14,   5,    -3,   -11,  -19,  -28,  -36,  -44,  -52,
     -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -185},
    {72,  64,  56,  48,  39,  31,   23,   15,   6,    -2,   -10,  -18,  -27,  -35,  -43,  -51,
     -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -184},
    {73,  65,  57,  49,  40,  32,   24,   16,   7,    -1,   -9,   -17,  -26,  -34,  -42,  -50,
     -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -183},
    {74,  66,  58,  50,  41,  33,  25,   17,   8,    0,    -8,   -16,  -25,  -33,  -41,  -49,
     -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -182},
    {75,  67,  59,  51,  42,  34,  26,   18,   9,    1,    -7,   -15,  -24,  -32,  -40,  -48,
     -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -181},
    {76,  68,  60,  52,  43,  35,  27,   19,   10,   2,    -6,   -14,  -23,  -31,  -39,  -47,
     -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -180},
    {77,  69,  61,  53,  44,  36,  28,   20,   11,   3,    -5,   -13,  -22,  -30,  -38,  -46,
     -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -179},
    {78,  70,  62,  54,  45,  37,  29,   21,   12,   4,    -4,   -12,  -21,  -29,  -37,  -45,
     -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -178},
    {79,  71,  63,  55,  46,  38,  30,   22,   13,   5,    -3,   -11,  -20,  -28,  -36,  -44,
     -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -177},
    {80,  72,  64,  56,  47,  39,  31,   23,   14,   6,    -2,   -10,  -19,  -27,  -35,  -43,
     -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -176},
    {81,  73,  65,  57,  48,  40,  32,   24,   15,   7,    -1,   -9,   -18,  -26,  -34,  -42,
     -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -175},
    {82,  74,  66,  58,  49,  41,  33,  25,   16,   8,    0,    -8,   -17,  -25,  -33,  -41,
     -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -174},
    {83,  75,  67,  59,  50,  42,  34,  26,   17,   9,    1,    -7,   -16,  -24,  -32,  -40,
     -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -173},
    {84,  76,  68,  60,  51,  43,  35,  27,   18,   10,   2,    -6,   -15,  -23,  -31,  -39,
     -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -172},
    {85,  77,  69,  61,  52,  44,  36,  28,   19,   11,   3,    -5,   -14,  -22,  -30,  -38,
     -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -171},
    {86,  78,  70,  62,  53,  45,  37,  29,   20,   12,   4,    -4,   -13,  -21,  -29,  -37,
     -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -170},
    {87,  79,  71,  63,  54,  46,  38,  30,   21,   13,   5,    -3,   -12,  -20,  -28,  -36,
     -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -169},
    {88,  80,  72,  64,  55,  47,  39,  31,   22,   14,   6,    -2,   -11,  -19,  -27,  -35,
     -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -168},
    {89,  81,  73,  65,  56,  48,  40,  32,   23,   15,   7,    -1,   -10,  -18,  -26,  -34,
     -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -167},
    {90,  82,  74,  66,  57,  49,  41,  33,  24,   16,   8,    0,    -9,   -17,  -25,  -33,
     -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -166},
    {91,  83,  75,  67,  58,  50,  42,  34,  25,   17,   9,    1,    -8,   -16,  -24,  -32,
     -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -165},
    {92,  84,  76,  68,  59,  51,  43,  35,  26,   18,   10,   2,    -7,   -15,  -23,  -31,
     -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -164},
    {93,  85,  77,  69,  60,  52,  44,  36,  27,   19,   11,   3,    -6,   -14,  -22,  -30,
     -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -163},
    {94,  86,  78,  70,  61,  53,  45,  37,  28,   20,   12,   4,    -5,   -13,  -21,  -29,
     -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -162},
    {95,  87,  79,  71,  62,  54,  46,  38,  29,   21,   13,   5,    -4,   -12,  -20,  -28,
     -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -161},
    {96,  88,  80,  72,  63,  55,  47,  39,  30,   22,   14,   6,    -3,   -11,  -19,  -27,
     -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -160},
    {97,  89,  81,  73,  64,  56,  48,  40,  31,   23,   15,   7,    -2,   -10,  -18,  -26,
     -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -159},
    {98,  90,  82,  74,  65,  57,  49,  41,  32,   24,   16,   8,    -1,   -9,   -17,  -25,
     -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -158},
    {99,  91,  83,  75,  66,  58,  50,  42,  33,  25,   17,   9,    0,    -8,   -16,  -24,
     -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -157},
    {100, 92,  84,  76,  67,  59,  51,  43,  34,  26,   18,   10,   1,    -7,   -15,  -23,
     -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -156},
    {101, 93,  85,  77,  68,  60,  52,  44,  35,  27,   19,   11,   2,    -6,   -14,  -22,
     -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -155},
    {102, 94,  86,  78,  69,  61,  53,  45,  36,  28,   20,   12,   3,    -5,   -13,  -21,
     -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -154},
    {103, 95,  87,  79,  70,  62,  54,  46,  37,  29,   21,   13,   4,    -4,   -12,  -20,
     -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -153},
    {104, 96,  88,  80,  71,  63,  55,  47,  38,  30,   22,   14,   5,    -3,   -11,  -19,
     -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -152},
    {105, 97,  89,  81,  72,  64,  56,  48,  39,  31,   23,   15,   6,    -2,   -10,  -18,
     -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -151},
    {106, 98,  90,  82,  73,  65,  57,  49,  40,  32,   24,   16,   7,    -1,   -9,   -17,
     -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -150},
    {107, 99,  91,  83,  74,  66,  58,  50,  41,  33,  25,   17,   8,    0,    -8,   -16,
     -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -149},
    {108, 100, 92,  84,  75,  67,  59,  51,  42,  34,  26,   18,   9,    1,    -7,   -15,
     -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -148},
    {109, 101, 93,  85,  76,  68,  60,  52,  43,  35,  27,   19,   10,   2,    -6,   -14,
     -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -147},
    {110, 102, 94,  86,  77,  69,  61,  53,  44,  36,  28,   20,   11,   3,    -5,   -13,
     -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -146},
    {111, 103, 95,  87,  78,  70,  62,  54,  45,  37,  29,   21,   12,   4,    -4,   -12,
     -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -145},
    {112, 104, 96,  88,  79,  71,  63,  55,  46,  38,  30,   22,   13,   5,    -3,   -11,
     -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -144},
    {113, 105, 97,  89,  80,  72,  64,  56,  47,  39,  31,   23,   14,   6,    -2,   -10,
     -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -143},
    {114, 106, 98,  90,  81,  73,  65,  57,  48,  40,  32,   24,   15,   7,    -1,   -9,
     -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -142},
    {115, 107, 99,  91,  82,  74,  66,  58,  49,  41,  33,  25,   16,   8,    0,    -8,
     -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -141},
    {116, 108, 100, 92,  83,  75,  67,  59,  50,  42,  34,  26,   17,   9,    1,    -7,
     -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -140},
    {117, 109, 101, 93,  84,  76,  68,  60,  51,  43,  35,  27,   18,   10,   2,    -6,
     -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -139},
    {118, 110, 102, 94,  85,  77,  69,  61,  52,  44,  36,  28,   19,   11,   3,    -5,
     -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -138},
    {119, 111, 103, 95,  86,  78,  70,  62,  53,  45,  37,  29,   20,   12,   4,    -4,
     -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -137},
    {120, 112, 104, 96,  87,  79,  71,  63,  54,  46,  38,  30,   21,   13,   5,    -3,
     -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -136},
    {121, 113, 105, 97,  88,  80,  72,  64,  55,  47,  39,  31,   22,   14,   6,    -2,
     -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -135},
    {122, 114, 106, 98,  89,  81,  73,  65,  56,  48,  40,  32,   23,   15,   7,    -1,
     -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -134},
    {123, 115, 107, 99,  90,  82,  74,  66,  57,  49,  41,  33,  24,   16,   8,    0,
     -9,  -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -133},
    {124, 116, 108, 100, 91,  83,  75,  67,  58,  50,  42,  34,  25,   17,   9,    1,
     -8,  -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -132},
    {125, 117, 109, 101, 92,  84,  76,  68,  59,  51,  43,  35,  26,   18,   10,   2,
     -7,  -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -131},
    {126, 118, 110, 102, 93,  85,  77,  69,  60,  52,  44,  36,  27,   19,   11,   3,
     -6,  -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -130},
    {127, 119, 111, 103, 94,  86,  78,  70,  61,  53,  45,  37,  28,   20,   12,   4,
     -5,  -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -129},
    {128, 120, 112, 104, 95,  87,  79,  71,  62,  54,  46,  38,  29,   21,   13,   5,
     -4,  -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -128},
    {129, 121, 113, 105, 96,  88,  80,  72,  63,  55,  47,  39,  30,   22,   14,   6,
     -3,  -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -127},
    {130, 122, 114, 106, 97,  89,  81,  73,  64,  56,  48,  40,  31,   23,   15,   7,
     -2,  -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -126},
    {131, 123, 115, 107, 98,  90,  82,  74,  65,  57,  49,  41,  32,   24,   16,   8,
     -1,  -9,  -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -125},
    {132, 124, 116, 108, 99,  91,  83,  75,  66,  58,  50,  42,  33,  25,   17,   9,
     0,   -8,  -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -124},
    {133, 125, 117, 109, 100, 92,  84,  76,  67,  59,  51,  43,  34,  26,   18,   10,
     1,   -7,  -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -123},
    {134, 126, 118, 110, 101, 93,  85,  77,  68,  60,  52,  44,  35,  27,   19,   11,
     2,   -6,  -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -122},
    {135, 127, 119, 111, 102, 94,  86,  78,  69,  61,  53,  45,  36,  28,   20,   12,
     3,   -5,  -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -121},
    {136, 128, 120, 112, 103, 95,  87,  79,  70,  62,  54,  46,  37,  29,   21,   13,
     4,   -4,  -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -120},
    {137, 129, 121, 113, 104, 96,  88,  80,  71,  63,  55,  47,  38,  30,   22,   14,
     5,   -3,  -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -119},
    {138, 130, 122, 114, 105, 97,  89,  81,  72,  64,  56,  48,  39,  31,   23,   15,
     6,   -2,  -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -118},
    {139, 131, 123, 115, 106, 98,  90,  82,  73,  65,  57,  49,  40,  32,   24,   16,
     7,   -1,  -9,  -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -117},
    {140, 132, 124, 116, 107, 99,  91,  83,  74,  66,  58,  50,  41,  33,  25,   17,
     8,   0,   -8,  -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -116},
    {141, 133, 125, 117, 108, 100, 92,  84,  75,  67,  59,  51,  42,  34,  26,   18,
     9,   1,   -7,  -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -115},
    {142, 134, 126, 118, 109, 101, 93,  85,  76,  68,  60,  52,  43,  35,  27,   19,
     10,  2,   -6,  -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -114},
    {143, 135, 127, 119, 110, 102, 94,  86,  77,  69,  61,  53,  44,  36,  28,   20,
     11,  3,   -5,  -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -113},
    {144, 136, 128, 120, 111, 103, 95,  87,  78,  70,  62,  54,  45,  37,  29,   21,
     12,  4,   -4,  -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -112},
    {145, 137, 129, 121, 112, 104, 96,  88,  79,  71,  63,  55,  46,  38,  30,   22,
     13,  5,   -3,  -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -111},
    {146, 138, 130, 122, 113, 105, 97,  89,  80,  72,  64,  56,  47,  39,  31,   23,
     14,  6,   -2,  -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -110},
    {147, 139, 131, 123, 114, 106, 98,  90,  81,  73,  65,  57,  48,  40,  32,   24,
     15,  7,   -1,  -9,  -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -109},
    {148, 140, 132, 124, 115, 107, 99,  91,  82,  74,  66,  58,  49,  41,  33,  25,
     16,  8,   0,   -8,  -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -108},
    {149, 141, 133, 125, 116, 108, 100, 92,  83,  75,  67,  59,  50,  42,  34,  26,
     17,  9,   1,   -7,  -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -107},
    {150, 142, 134, 126, 117, 109, 101, 93,  84,  76,  68,  60,  51,  43,  35,  27,
     18,  10,  2,   -6,  -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -106},
    {151, 143, 135, 127, 118, 110, 102, 94,  85,  77,  69,  61,  52,  44,  36,  28,
     19,  11,  3,   -5,  -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -105},
    {152, 144, 136, 128, 119, 111, 103, 95,  86,  78,  70,  62,  53,  45,  37,  29,
     20,  12,  4,   -4,  -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -104},
    {153, 145, 137, 129, 120, 112, 104, 96,  87,  79,  71,  63,  54,  46,  38,  30,
     21,  13,  5,   -3,  -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -103},
    {154, 146, 138, 130, 121, 113, 105, 97,  88,  80,  72,  64,  55,  47,  39,  31,
     22,  14,  6,   -2,  -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -102},
    {155, 147, 139, 131, 122, 114, 106, 98,  89,  81,  73,  65,  56,  48,  40,  32,
     23,  15,  7,   -1,  -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -101},
    {156, 148, 140, 132, 123, 115, 107, 99,  90,  82,  74,  66,  57,  49,  41,  33,
     24,  16,  8,   0,   -9,  -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -100},
    {157, 149, 141, 133, 124, 116, 108, 100, 91,  83,  75,  67,  58,  50,  42,  34,
     25,  17,  9,   1,   -8,  -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -99},
    {158, 150, 142, 134, 125, 117, 109, 101, 92,  84,  76,  68,  59,  51,  43,  35,
     26,  18,  10,  2,   -7,  -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -98},
    {159, 151, 143, 135, 126, 118, 110, 102, 93,  85,  77,  69,  60,  52,  44,  36,
     27,  19,  11,  3,   -6,  -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -97},
    {160, 152, 144, 136, 127, 119, 111, 103, 94,  86,  78,  70,  61,  53,  45,  37,
     28,  20,  12,  4,   -5,  -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -96},
    {161, 153, 145, 137, 128, 120, 112, 104, 95,  87,  79,  71,  62,  54,  46,  38,
     29,  21,  13,  5,   -4,  -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -95},
    {162, 154, 146, 138, 129, 121, 113, 105, 96,  88,  80,  72,  63,  55,  47,  39,
     30,  22,  14,  6,   -3,  -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -94},
    {163, 155, 147, 139, 130, 122, 114, 106, 97,  89,  81,  73,  64,  56,  48,  40,
     31,  23,  15,  7,   -2,  -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -93},
    {164, 156, 148, 140, 131, 123, 115, 107, 98,  90,  82,  74,  65,  57,  49,  41,
     32,  24,  16,  8,   -1,  -9,  -17, -25, -34, -42, -50, -58, -67, -75, -83, -92},
    {165, 157, 149, 141, 132, 124, 116, 108, 99,  91,  83,  75,  66,  58,  50,  42,
     33,  25,  17,  9,   0,   -8,  -16, -24, -33, -41, -49, -57, -66, -74, -82, -91},
    {166, 158, 150, 142, 133, 125, 117, 109, 100, 92,  84,  76,  67,  59,  51,  43,
     34,  26,  18,  10,  1,   -7,  -15, -23, -32, -40, -48, -56, -65, -73, -81, -90},
    {167, 159, 151, 143, 134, 126, 118, 110, 101, 93,  85,  77,  68,  60,  52,  44,
     35,  27,  19,  11,  2,   -6,  -14, -22, -31, -39, -47, -55, -64, -72, -80, -89},
    {168, 160, 152, 144, 135, 127, 119, 111, 102, 94,  86,  78,  69,  61,  53,  45,
     36,  28,  20,  12,  3,   -5,  -13, -21, -30, -38, -46, -54, -63, -71, -79, -88},
    {169, 161, 153, 145, 136, 128, 120, 112, 103, 95,  87,  79,  70,  62,  54,  46,
     37,  29,  21,  13,  4,   -4,  -12, -20, -29, -37, -45, -53, -62, -70, -78, -87},
    {170, 162, 154, 146, 137, 129, 121, 113, 104, 96,  88,  80,  71,  63,  55,  47,
     38,  30,  22,  14,  5,   -3,  -11, -19, -28, -36, -44, -52, -61, -69, -77, -86},
    {171, 163, 155, 147, 138, 130, 122, 114, 105, 97,  89,  81,  72,  64,  56,  48,
     39,  31,  23,  15,  6,   -2,  -10, -18, -27, -35, -43, -51, -60, -68, -76, -85},
    {172, 164, 156, 148, 139, 131, 123, 115, 106, 98,  90,  82,  73,  65,  57,  49,
     40,  32,  24,  16,  7,   -1,  -9,  -17, -26, -34, -42, -50, -59, -67, -75, -84},
    {173, 165, 157, 149, 140, 132, 124, 116, 107, 99,  91,  83,  74,  66,  58,  50,
     41,  33,  25,  17,  8,   0,   -8,  -16, -25, -33, -41, -49, -58, -66, -74, -83},
    {174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92,  84,  75,  67,  59,  51,
     42,  34,  26,  18,  9,   1,   -7,  -15, -24, -32, -40, -48, -57, -65, -73, -82},
    {175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93,  85,  76,  68,  60,  52,
     43,  35,  27,  19,  10,  2,   -6,  -14, -23, -31, -39, -47, -56, -64, -72, -81},
    {176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94,  86,  77,  69,  61,  53,
     44,  36,  28,  20,  11,  3,   -5,  -13, -22, -30, -38, -46, -55, -63, -71, -80},
    {177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95,  87,  78,  70,  62,  54,
     45,  37,  29,  21,  12,  4,   -4,  -12, -21, -29, -37, -45, -54, -62, -70, -79},
    {178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96,  88,  79,  71,  63,  55,
     46,  38,  30,  22,  13,  5,   -3,  -11, -20, -28, -36, -44, -53, -61, -69, -78},
    {179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97,  89,  80,  72,  64,  56,
     47,  39,  31,  23,  14,  6,   -2,  -10, -19, -27, -35, -43, -52, -60, -68, -77},
    {180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98,  90,  81,  73,  65,  57,
     48,  40,  32,  24,  15,  7,   -1,  -9,  -18, -26, -34, -42, -51, -59, -67, -76},
    {181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99,  91,  82,  74,  66,  58,
     49,  41,  33,  25,  16,  8,   0,   -8,  -17, -25, -33, -41, -50, -58, -66, -75},
    {182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92,  83,  75,  67,  59,
     50,  42,  34,  26,  17,  9,   1,   -7,  -16, -24, -32, -40, -49, -57, -65, -74},
    {183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93,  84,  76,  68,  60,
     51,  43,  35,  27,  18,  10,  2,   -6,  -15, -23, -31, -39, -48, -56, -64, -73},
    {184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94,  85,  77,  69,  61,
     52,  44,  36,  28,  19,  11,  3,   -5,  -14, -22, -30, -38, -47, -55, -63, -72},
    {185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95,  86,  78,  70,  62,
     53,  45,  37,  29,  20,  12,  4,   -4,  -13, -21, -29, -37, -46, -54, -62, -71},
    {186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96,  87,  79,  71,  63,
     54,  46,  38,  30,  21,  13,  5,   -3,  -12, -20, -28, -36, -45, -53, -61, -70},
    {187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97,  88,  80,  72,  64,
     55,  47,  39,  31,  22,  14,  6,   -2,  -11, -19, -27, -35, -44, -52, -60, -69},
    {188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98,  89,  81,  73,  65,
     56,  48,  40,  32,  23,  15,  7,   -1,  -10, -18, -26, -34, -43, -51, -59, -68},
    {189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99,  90,  82,  74,  66,
     57,  49,  41,  33,  24,  16,  8,   0,   -9,  -17, -25, -33, -42, -50, -58, -67},
    {190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91,  83,  75,  67,
     58,  50,  42,  34,  25,  17,  9,   1,   -8,  -16, -24, -32, -41, -49, -57, -66},
    {191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92,  84,  76,  68,
     59,  51,  43,  35,  26,  18,  10,  2,   -7,  -15, -23, -31, -40, -48, -56, -65},
    {192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93,  85,  77,  69,
     60,  52,  44,  36,  27,  19,  11,  3,   -6,  -14, -22, -30, -39, -47, -55, -64},
    {193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94,  86,  78,  70,
     61,  53,  45,  37,  28,  20,  12,  4,   -5,  -13, -21, -29, -38, -46, -54, -63},
    {194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95,  87,  79,  71,
     62,  54,  46,  38,  29,  21,  13,  5,   -4,  -12, -20, -28, -37, -45, -53, -62},
    {195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96,  88,  80,  72,
     63,  55,  47,  39,  30,  22,  14,  6,   -3,  -11, -19, -27, -36, -44, -52, -61},
    {196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97,  89,  81,  73,
     64,  56,  48,  40,  31,  23,  15,  7,   -2,  -10, -18, -26, -35, -43, -51, -60},
    {197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98,  90,  82,  74,
     65,  57,  49,  41,  32,  24,  16,  8,   -1,  -9,  -17, -25, -34, -42, -50, -59},
    {198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99,  91,  83,  75,
     66,  58,  50,  42,  33,  25,  17,  9,   0,   -8,  -16, -24, -33, -41, -49, -58},
    {199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92,  84,  76,
     67,  59,  51,  43,  34,  26,  18,  10,  1,   -7,  -15, -23, -32, -40, -48, -57},
    {200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93,  85,  77,
     68,  60,  52,  44,  35,  27,  19,  11,  2,   -6,  -14, -22, -31, -39, -47, -56},
    {201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111, 102, 94,  86,  78,
     69,  61,  53,  45,  36,  28,  20,  12,  3,   -5,  -13, -21, -30, -38, -46, -55},
    {202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112, 103, 95,  87,  79,
     70,  62,  54,  46,  37,  29,  21,  13,  4,   -4,  -12, -20, -29, -37, -45, -54},
    {203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113, 104, 96,  88,  80,
     71,  63,  55,  47,  38,  30,  22,  14,  5,   -3,  -11, -19, -28, -36, -44, -53},
    {204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114, 105, 97,  89,  81,
     72,  64,  56,  48,  39,  31,  23,  15,  6,   -2,  -10, -18, -27, -35, -43, -52},
    {205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115, 106, 98,  90,  82,
     73,  65,  57,  49,  40,  32,  24,  16,  7,   -1,  -9,  -17, -26, -34, -42, -51},
    {206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116, 107, 99,  91,  83,
     74,  66,  58,  50,  41,  33,  25,  17,  8,   0,   -8,  -16, -25, -33, -41, -50},
    {207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92,  84,
     75,  67,  59,  51,  42,  34,  26,  18,  9,   1,   -7,  -15, -24, -32, -40, -49},
    {208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93,  85,
     76,  68,  60,  52,  43,  35,  27,  19,  10,  2,   -6,  -14, -23, -31, -39, -48},
    {209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94,  86,
     77,  69,  61,  53,  44,  36,  28,  20,  11,  3,   -5,  -13, -22, -30, -38, -47},
    {210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95,  87,
     78,  70,  62,  54,  45,  37,  29,  21,  12,  4,   -4,  -12, -21, -29, -37, -46},
    {211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96,  88,
     79,  71,  63,  55,  46,  38,  30,  22,  13,  5,   -3,  -11, -20, -28, -36, -45},
    {212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97,  89,
     80,  72,  64,  56,  47,  39,  31,  23,  14,  6,   -2,  -10, -19, -27, -35, -44},
    {213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98,  90,
     81,  73,  65,  57,  48,  40,  32,  24,  15,  7,   -1,  -9,  -18, -26, -34, -43},
    {214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99,  91,
     82,  74,  66,  58,  49,  41,  33,  25,  16,  8,   0,   -8,  -17, -25, -33, -42},
    {215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92,
     83,  75,  67,  59,  50,  42,  34,  26,  17,  9,   1,   -7,  -16, -24, -32, -41},
    {216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93,
     84,  76,  68,  60,  51,  43,  35,  27,  18,  10,  2,   -6,  -15, -23, -31, -40},
    {217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94,
     85,  77,  69,  61,  52,  44,  36,  28,  19,  11,  3,   -5,  -14, -22, -30, -39},
    {218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95,
     86,  78,  70,  62,  53,  45,  37,  29,  20,  12,  4,   -4,  -13, -21, -29, -38},
    {219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96,
     87,  79,  71,  63,  54,  46,  38,  30,  21,  13,  5,   -3,  -12, -20, -28, -37},
    {220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97,
     88,  80,  72,  64,  55,  47,  39,  31,  22,  14,  6,   -2,  -11, -19, -27, -36},
    {221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98,
     89,  81,  73,  65,  56,  48,  40,  32,  23,  15,  7,   -1,  -10, -18, -26, -35},
    {222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99,
     90,  82,  74,  66,  57,  49,  41,  33,  24,  16,  8,   0,   -9,  -17, -25, -34},
    {223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100,
     91,  83,  75,  67,  58,  50,  42,  34,  25,  17,  9,   1,   -8,  -16, -24, -33},
    {224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101,
     92,  84,  76,  68,  59,  51,  43,  35,  26,  18,  10,  2,   -7,  -15, -23, -32},
    {225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102,
     93,  85,  77,  69,  60,  52,  44,  36,  27,  19,  11,  3,   -6,  -14, -22, -31},
    {226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103,
     94,  86,  78,  70,  61,  53,  45,  37,  28,  20,  12,  4,   -5,  -13, -21, -30},
    {227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104,
     95,  87,  79,  71,  62,  54,  46,  38,  29,  21,  13,  5,   -4,  -12, -20, -29},
    {228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105,
     96,  88,  80,  72,  63,  55,  47,  39,  30,  22,  14,  6,   -3,  -11, -19, -28},
    {229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106,
     97,  89,  81,  73,  64,  56,  48,  40,  31,  23,  15,  7,   -2,  -10, -18, -27},
    {230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107,
     98,  90,  82,  74,  65,  57,  49,  41,  32,  24,  16,  8,   -1,  -9,  -17, -26},
    {231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108,
     99,  91,  83,  75,  66,  58,  50,  42,  33,  25,  17,  9,   0,   -8,  -16, -25},
    {232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109,
     100, 92,  84,  76,  67,  59,  51,  43,  34,  26,  18,  10,  1,   -7,  -15, -24},
    {233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110,
     101, 93,  85,  77,  68,  60,  52,  44,  35,  27,  19,  11,  2,   -6,  -14, -23},
    {234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111,
     102, 94,  86,  78,  69,  61,  53,  45,  36,  28,  20,  12,  3,   -5,  -13, -22},
    {235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112,
     103, 95,  87,  79,  70,  62,  54,  46,  37,  29,  21,  13,  4,   -4,  -12, -21},
    {236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113,
     104, 96,  88,  80,  71,  63,  55,  47,  38,  30,  22,  14,  5,   -3,  -11, -20},
    {237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114,
     105, 97,  89,  81,  72,  64,  56,  48,  39,  31,  23,  15,  6,   -2,  -10, -19},
    {238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115,
     106, 98,  90,  82,  73,  65,  57,  49,  40,  32,  24,  16,  7,   -1,  -9,  -18},
    {239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116,
     107, 99,  91,  83,  74,  66,  58,  50,  41,  33,  25,  17,  8,   0,   -8,  -17},
    {240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117,
     108, 100, 92,  84,  75,  67,  59,  51,  42,  34,  26,  18,  9,   1,   -7,  -16},
    {241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118,
     109, 101, 93,  85,  76,  68,  60,  52,  43,  35,  27,  19,  10,  2,   -6,  -15},
    {242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119,
     110, 102, 94,  86,  77,  69,  61,  53,  44,  36,  28,  20,  11,  3,   -5,  -14},
    {243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120,
     111, 103, 95,  87,  78,  70,  62,  54,  45,  37,  29,  21,  12,  4,   -4,  -13},
    {244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121,
     112, 104, 96,  88,  79,  71,  63,  55,  46,  38,  30,  22,  13,  5,   -3,  -12},
    {245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122,
     113, 105, 97,  89,  80,  72,  64,  56,  47,  39,  31,  23,  14,  6,   -2,  -11},
    {246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123,
     114, 106, 98,  90,  81,  73,  65,  57,  48,  40,  32,  24,  15,  7,   -1,  -10},
    {247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124,
     115, 107, 99,  91,  82,  74,  66,  58,  49,  41,  33,  25,  16,  8,   0,   -9},
    {248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125,
     116, 108, 100, 92,  83,  75,  67,  59,  50,  42,  34,  26,  17,  9,   1,   -8},
    {249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126,
     117, 109, 101, 93,  84,  76,  68,  60,  51,  43,  35,  27,  18,  10,  2,   -7},
    {250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127,
     118, 110, 102, 94,  85,  77,  69,  61,  52,  44,  36,  28,  19,  11,  3,   -6},
    {251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128,
     119, 111, 103, 95,  86,  78,  70,  62,  53,  45,  37,  29,  20,  12,  4,   -5},
    {252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129,
     120, 112, 104, 96,  87,  79,  71,  63,  54,  46,  38,  30,  21,  13,  5,   -4},
    {253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130,
     121, 113, 105, 97,  88,  80,  72,  64,  55,  47,  39,  31,  22,  14,  6,   -3},
    {254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131,
     122, 114, 106, 98,  89,  81,  73,  65,  56,  48,  40,  32,  23,  15,  7,   -2},
    {255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132,
     123, 115, 107, 99,  90,  82,  74,  66,  57,  49,  41,  33,  24,  16,  8,   -1},
    {256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133,
     124, 116, 108, 100, 91,  83,  75,  67,  58,  50,  42,  34,  25,  17,  9,   0},
    {257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134,
     125, 117, 109, 101, 92,  84,  76,  68,  59,  51,  43,  35,  26,  18,  10,  1},
    {258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135,
     126, 118, 110, 102, 93,  85,  77,  69,  60,  52,  44,  36,  27,  19,  11,  2},
    {259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136,
     127, 119, 111, 103, 94,  86,  78,  70,  61,  53,  45,  37,  28,  20,  12,  3},
    {260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137,
     128, 120, 112, 104, 95,  87,  79,  71,  62,  54,  46,  38,  29,  21,  13,  4},
    {261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138,
     129, 121, 113, 105, 96,  88,  80,  72,  63,  55,  47,  39,  30,  22,  14,  5},
    {262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139,
     130, 122, 114, 106, 97,  89,  81,  73,  64,  56,  48,  40,  31,  23,  15,  6},
    {263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140,
     131, 123, 115, 107, 98,  90,  82,  74,  65,  57,  49,  41,  32,  24,  16,  7},
    {264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141,
     132, 124, 116, 108, 99,  91,  83,  75,  66,  58,  50,  42,  33,  25,  17,  8},
    {265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142,
     133, 125, 117, 109, 100, 92,  84,  76,  67,  59,  51,  43,  34,  26,  18,  9},
    {266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143,
     134, 126, 118, 110, 101, 93,  85,  77,  68,  60,  52,  44,  35,  27,  19,  10},
    {267, 259, 251, 243, 234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144,
     135, 127, 119, 111, 102, 94,  86,  78,  69,  61,  53,  45,  36,  28,  20,  11},
    {268, 260, 252, 244, 235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145,
     136, 128, 120, 112, 103, 95,  87,  79,  70,  62,  54,  46,  37,  29,  21,  12},
    {269, 261, 253, 245, 236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146,
     137, 129, 121, 113, 104, 96,  88,  80,  71,  63,  55,  47,  38,  30,  22,  13},
    {270, 262, 254, 246, 237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147,
     138, 130, 122, 114, 105, 97,  89,  81,  72,  64,  56,  48,  39,  31,  23,  14},
    {271, 263, 255, 247, 238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148,
     139, 131, 123, 115, 106, 98,  90,  82,  73,  65,  57,  49,  40,  32,  24,  15},
    {272, 264, 256, 248, 239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149,
     140, 132, 124, 116, 107, 99,  91,  83,  74,  66,  58,  50,  41,  33,  25,  16},
    {273, 265, 257, 249, 240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150,
     141, 133, 125, 117, 108, 100, 92,  84,  75,  67,  59,  51,  42,  34,  26,  17},
    {274, 266, 258, 250, 241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151,
     142, 134, 126, 118, 109, 101, 93,  85,  76,  68,  60,  52,  43,  35,  27,  18},
    {275, 267, 259, 251, 242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152,
     143, 135, 127, 119, 110, 102, 94,  86,  77,  69,  61,  53,  44,  36,  28,  19},
    {276, 268, 260, 252, 243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153,
     144, 136, 128, 120, 111, 103, 95,  87,  78,  70,  62,  54,  45,  37,  29,  20},
    {277, 269, 261, 253, 244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154,
     145, 137, 129, 121, 112, 104, 96,  88,  79,  71,  63,  55,  46,  38,  30,  21},
    {278, 270, 262, 254, 245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155,
     146, 138, 130, 122, 113, 105, 97,  89,  80,  72,  64,  56,  47,  39,  31,  22},
    {279, 271, 263, 255, 246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156,
     147, 139, 131, 123, 114, 106, 98,  90,  81,  73,  65,  57,  48,  40,  32,  23},
    {280, 272, 264, 256, 247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157,
     148, 140, 132, 124, 115, 107, 99,  91,  82,  74,  66,  58,  49,  41,  33,  24},
    {281, 273, 265, 257, 248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158,
     149, 141, 133, 125, 116, 108, 100, 92,  83,  75,  67,  59,  50,  42,  34,  25},
    {282, 274, 266, 258, 249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159,
     150, 142, 134, 126, 117, 109, 101, 93,  84,  76,  68,  60,  51,  43,  35,  26},
    {283, 275, 267, 259, 250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160,
     151, 143, 135, 127, 118, 110, 102, 94,  85,  77,  69,  61,  52,  44,  36,  27},
    {284, 276, 268, 260, 251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161,
     152, 144, 136, 128, 119, 111, 103, 95,  86,  78,  70,  62,  53,  45,  37,  28},
    {285, 277, 269, 261, 252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162,
     153, 145, 137, 129, 120, 112, 104, 96,  87,  79,  71,  63,  54,  46,  38,  29},
    {286, 278, 270, 262, 253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163,
     154, 146, 138, 130, 121, 113, 105, 97,  88,  80,  72,  64,  55,  47,  39,  30},
    {287, 279, 271, 263, 254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164,
     155, 147, 139, 131, 122, 114, 106, 98,  89,  81,  73,  65,  56,  48,  40,  31},
    {288, 280, 272, 264, 255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165,
     156, 148, 140, 132, 123, 115, 107, 99,  90,  82,  74,  66,  57,  49,  41,  32},
    {289, 281, 273, 265, 256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166,
     157, 149, 141, 133, 124, 116, 108, 100, 91,  83,  75,  67,  58,  50,  42,  33},
    {290, 282, 274, 266, 257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167,
     158, 150, 142, 134, 125, 117, 109, 101, 92,  84,  76,  68,  59,  51,  43,  34},
    {291, 283, 275, 267, 258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168,
     159, 151, 143, 135, 126, 118, 110, 102, 93,  85,  77,  69,  60,  52,  44,  35},
    {292, 284, 276, 268, 259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169,
     160, 152, 144, 136, 127, 119, 111, 103, 94,  86,  78,  70,  61,  53,  45,  36},
    {293, 285, 277, 269, 260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170,
     161, 153, 145, 137, 128, 120, 112, 104, 95,  87,  79,  71,  62,  54,  46,  37},
    {294, 286, 278, 270, 261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171,
     162, 154, 146, 138, 129, 121, 113, 105, 96,  88,  80,  72,  63,  55,  47,  38},
    {295, 287, 279, 271, 262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172,
     163, 155, 147, 139, 130, 122, 114, 106, 97,  89,  81,  73,  64,  56,  48,  39},
    {296, 288, 280, 272, 263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173,
     164, 156, 148, 140, 131, 123, 115, 107, 98,  90,  82,  74,  65,  57,  49,  40},
    {297, 289, 281, 273, 264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174,
     165, 157, 149, 141, 132, 124, 116, 108, 99,  91,  83,  75,  66,  58,  50,  41},
    {298, 290, 282, 274, 265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175,
     166, 158, 150, 142, 133, 125, 117, 109, 100, 92,  84,  76,  67,  59,  51,  42},
    {299, 291, 283, 275, 266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176,
     167, 159, 151, 143, 134, 126, 118, 110, 101, 93,  85,  77,  68,  60,  52,  43},
};
static const int32_t (*error_blue_table)[32] = error_red_table;
static const int32_t error_greed_table[][64] = {
    {0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,  -44,  -48,
     -52,  -56,  -60,  -65,  -69,  -73,  -77,  -81,  -85,  -89,  -93,  -97,  -101,
     -105, -109, -113, -117, -121, -125, -130, -134, -138, -142, -146, -150, -154,
     -158, -162, -166, -170, -174, -178, -182, -186, -190, -195, -199, -203, -207,
     -211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -251, -256},
    {1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,  -43,  -47,
     -51,  -55,  -59,  -64,  -68,  -72,  -76,  -80,  -84,  -88,  -92,  -96,  -100,
     -104, -108, -112, -116, -120, -124, -129, -133, -137, -141, -145, -149, -153,
     -157, -161, -165, -169, -173, -177, -181, -185, -189, -194, -198, -202, -206,
     -210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -250, -255},
    {2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,  -42,  -46,
     -50,  -54,  -58,  -63,  -67,  -71,  -75,  -79,  -83,  -87,  -91,  -95,  -99,
     -103, -107, -111, -115, -119, -123, -128, -132, -136, -140, -144, -148, -152,
     -156, -160, -164, -168, -172, -176, -180, -184, -188, -193, -197, -201, -205,
     -209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -249, -254},
    {3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,  -41,  -45,
     -49,  -53,  -57,  -62,  -66,  -70,  -74,  -78,  -82,  -86,  -90,  -94,  -98,
     -102, -106, -110, -114, -118, -122, -127, -131, -135, -139, -143, -147, -151,
     -155, -159, -163, -167, -171, -175, -179, -183, -187, -192, -196, -200, -204,
     -208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -248, -253},
    {4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,  -44,
     -48,  -52,  -56,  -61,  -65,  -69,  -73,  -77,  -81,  -85,  -89,  -93,  -97,
     -101, -105, -109, -113, -117, -121, -126, -130, -134, -138, -142, -146, -150,
     -154, -158, -162, -166, -170, -174, -178, -182, -186, -191, -195, -199, -203,
     -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -252},
    {5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,  -43,
     -47,  -51,  -55,  -60,  -64,  -68,  -72,  -76,  -80,  -84,  -88,  -92,  -96,
     -100, -104, -108, -112, -116, -120, -125, -129, -133, -137, -141, -145, -149,
     -153, -157, -161, -165, -169, -173, -177, -181, -185, -190, -194, -198, -202,
     -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -251},
    {6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,  -42,
     -46,  -50,  -54,  -59,  -63,  -67,  -71,  -75,  -79,  -83,  -87,  -91,  -95,
     -99,  -103, -107, -111, -115, -119, -124, -128, -132, -136, -140, -144, -148,
     -152, -156, -160, -164, -168, -172, -176, -180, -184, -189, -193, -197, -201,
     -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -250},
    {7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,  -41,
     -45,  -49,  -53,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,  -90,  -94,
     -98,  -102, -106, -110, -114, -118, -123, -127, -131, -135, -139, -143, -147,
     -151, -155, -159, -163, -167, -171, -175, -179, -183, -188, -192, -196, -200,
     -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -249},
    {8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,
     -44,  -48,  -52,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,  -89,  -93,
     -97,  -101, -105, -109, -113, -117, -122, -126, -130, -134, -138, -142, -146,
     -150, -154, -158, -162, -166, -170, -174, -178, -182, -187, -191, -195, -199,
     -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -248},
    {9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,
     -43,  -47,  -51,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,  -88,  -92,
     -96,  -100, -104, -108, -112, -116, -121, -125, -129, -133, -137, -141, -145,
     -149, -153, -157, -161, -165, -169, -173, -177, -181, -186, -190, -194, -198,
     -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -247},
    {10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,
     -42,  -46,  -50,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,  -87,  -91,
     -95,  -99,  -103, -107, -111, -115, -120, -124, -128, -132, -136, -140, -144,
     -148, -152, -156, -160, -164, -168, -172, -176, -180, -185, -189, -193, -197,
     -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -246},
    {11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,
     -41,  -45,  -49,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,  -90,
     -94,  -98,  -102, -106, -110, -114, -119, -123, -127, -131, -135, -139, -143,
     -147, -151, -155, -159, -163, -167, -171, -175, -179, -184, -188, -192, -196,
     -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -245},
    {12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,
     -40,  -44,  -48,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,  -89,
     -93,  -97,  -101, -105, -109, -113, -118, -122, -126, -130, -134, -138, -142,
     -146, -150, -154, -158, -162, -166, -170, -174, -178, -183, -187, -191, -195,
     -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -244},
    {13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,
     -39,  -43,  -47,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,  -88,
     -92,  -96,  -100, -104, -108, -112, -117, -121, -125, -129, -133, -137, -141,
     -145, -149, -153, -157, -161, -165, -169, -173, -177, -182, -186, -190, -194,
     -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -243},
    {14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,
     -38,  -42,  -46,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,  -87,
     -91,  -95,  -99,  -103, -107, -111, -116, -120, -124, -128, -132, -136, -140,
     -144, -148, -152, -156, -160, -164, -168, -172, -176, -181, -185, -189, -193,
     -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -242},
    {15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,
     -37,  -41,  -45,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,
     -90,  -94,  -98,  -102, -106, -110, -115, -119, -123, -127, -131, -135, -139,
     -143, -147, -151, -155, -159, -163, -167, -171, -175, -180, -184, -188, -192,
     -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -241},
    {16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,
     -36,  -40,  -44,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,
     -89,  -93,  -97,  -101, -105, -109, -114, -118, -122, -126, -130, -134, -138,
     -142, -146, -150, -154, -158, -162, -166, -170, -174, -179, -183, -187, -191,
     -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -240},
    {17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,
     -35,  -39,  -43,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,
     -88,  -92,  -96,  -100, -104, -108, -113, -117, -121, -125, -129, -133, -137,
     -141, -145, -149, -153, -157, -161, -165, -169, -173, -178, -182, -186, -190,
     -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -239},
    {18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,
     -34,  -38,  -42,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,
     -87,  -91,  -95,  -99,  -103, -107, -112, -116, -120, -124, -128, -132, -136,
     -140, -144, -148, -152, -156, -160, -164, -168, -172, -177, -181, -185, -189,
     -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -238},
    {19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,
     -33,  -37,  -41,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,
     -86,  -90,  -94,  -98,  -102, -106, -111, -115, -119, -123, -127, -131, -135,
     -139, -143, -147, -151, -155, -159, -163, -167, -171, -176, -180, -184, -188,
     -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -237},
    {20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,
     -32,  -36,  -40,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,
     -85,  -89,  -93,  -97,  -101, -105, -110, -114, -118, -122, -126, -130, -134,
     -138, -142, -146, -150, -154, -158, -162, -166, -170, -175, -179, -183, -187,
     -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -236},
    {21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,
     -31,  -35,  -39,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,
     -84,  -88,  -92,  -96,  -100, -104, -109, -113, -117, -121, -125, -129, -133,
     -137, -141, -145, -149, -153, -157, -161, -165, -169, -174, -178, -182, -186,
     -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -235},
    {22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,
     -30,  -34,  -38,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,
     -83,  -87,  -91,  -95,  -99,  -103, -108, -112, -116, -120, -124, -128, -132,
     -136, -140, -144, -148, -152, -156, -160, -164, -168, -173, -177, -181, -185,
     -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -234},
    {23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,
     -29,  -33,  -37,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,
     -82,  -86,  -90,  -94,  -98,  -102, -107, -111, -115, -119, -123, -127, -131,
     -135, -139, -143, -147, -151, -155, -159, -163, -167, -172, -176, -180, -184,
     -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -233},
    {24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,
     -28,  -32,  -36,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,
     -81,  -85,  -89,  -93,  -97,  -101, -106, -110, -114, -118, -122, -126, -130,
     -134, -138, -142, -146, -150, -154, -158, -162, -166, -171, -175, -179, -183,
     -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -232},
    {25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,
     -27,  -31,  -35,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,
     -80,  -84,  -88,  -92,  -96,  -100, -105, -109, -113, -117, -121, -125, -129,
     -133, -137, -141, -145, -149, -153, -157, -161, -165, -170, -174, -178, -182,
     -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -231},
    {26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,
     -26,  -30,  -34,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,
     -79,  -83,  -87,  -91,  -95,  -99,  -104, -108, -112, -116, -120, -124, -128,
     -132, -136, -140, -144, -148, -152, -156, -160, -164, -169, -173, -177, -181,
     -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -230},
    {27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,
     -25,  -29,  -33,  -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,
     -78,  -82,  -86,  -90,  -94,  -98,  -103, -107, -111, -115, -119, -123, -127,
     -131, -135, -139, -143, -147, -151, -155, -159, -163, -168, -172, -176, -180,
     -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -229},
    {28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,
     -24,  -28,  -32,  -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,
     -77,  -81,  -85,  -89,  -93,  -97,  -102, -106, -110, -114, -118, -122, -126,
     -130, -134, -138, -142, -146, -150, -154, -158, -162, -167, -171, -175, -179,
     -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -228},
    {29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,
     -23,  -27,  -31,  -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,
     -76,  -80,  -84,  -88,  -92,  -96,  -101, -105, -109, -113, -117, -121, -125,
     -129, -133, -137, -141, -145, -149, -153, -157, -161, -166, -170, -174, -178,
     -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -227},
    {30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,
     -22,  -26,  -30,  -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,
     -75,  -79,  -83,  -87,  -91,  -95,  -100, -104, -108, -112, -116, -120, -124,
     -128, -132, -136, -140, -144, -148, -152, -156, -160, -165, -169, -173, -177,
     -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -226},
    {31,   27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,
     -21,  -25,  -29,  -34,  -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,
     -74,  -78,  -82,  -86,  -90,  -94,  -99,  -103, -107, -111, -115, -119, -123,
     -127, -131, -135, -139, -143, -147, -151, -155, -159, -164, -168, -172, -176,
     -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -225},
    {32,   28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,
     -20,  -24,  -28,  -33,  -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,
     -73,  -77,  -81,  -85,  -89,  -93,  -98,  -102, -106, -110, -114, -118, -122,
     -126, -130, -134, -138, -142, -146, -150, -154, -158, -163, -167, -171, -175,
     -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -224},
    {33,   29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,
     -19,  -23,  -27,  -32,  -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,
     -72,  -76,  -80,  -84,  -88,  -92,  -97,  -101, -105, -109, -113, -117, -121,
     -125, -129, -133, -137, -141, -145, -149, -153, -157, -162, -166, -170, -174,
     -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -223},
    {34,   30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,
     -18,  -22,  -26,  -31,  -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,
     -71,  -75,  -79,  -83,  -87,  -91,  -96,  -100, -104, -108, -112, -116, -120,
     -124, -128, -132, -136, -140, -144, -148, -152, -156, -161, -165, -169, -173,
     -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -222},
    {35,   31,   27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,
     -17,  -21,  -25,  -30,  -34,  -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,
     -70,  -74,  -78,  -82,  -86,  -90,  -95,  -99,  -103, -107, -111, -115, -119,
     -123, -127, -131, -135, -139, -143, -147, -151, -155, -160, -164, -168, -172,
     -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -221},
    {36,   32,   28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,
     -16,  -20,  -24,  -29,  -33,  -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,
     -69,  -73,  -77,  -81,  -85,  -89,  -94,  -98,  -102, -106, -110, -114, -118,
     -122, -126, -130, -134, -138, -142, -146, -150, -154, -159, -163, -167, -171,
     -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -220},
    {37,   33,   29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,
     -15,  -19,  -23,  -28,  -32,  -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,
     -68,  -72,  -76,  -80,  -84,  -88,  -93,  -97,  -101, -105, -109, -113, -117,
     -121, -125, -129, -133, -137, -141, -145, -149, -153, -158, -162, -166, -170,
     -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -219},
    {38,   34,   30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,
     -14,  -18,  -22,  -27,  -31,  -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,
     -67,  -71,  -75,  -79,  -83,  -87,  -92,  -96,  -100, -104, -108, -112, -116,
     -120, -124, -128, -132, -136, -140, -144, -148, -152, -157, -161, -165, -169,
     -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -218},
    {39,   35,   31,   27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,
     -13,  -17,  -21,  -26,  -30,  -34,  -38,  -42,  -46,  -50,  -54,  -58,  -62,
     -66,  -70,  -74,  -78,  -82,  -86,  -91,  -95,  -99,  -103, -107, -111, -115,
     -119, -123, -127, -131, -135, -139, -143, -147, -151, -156, -160, -164, -168,
     -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -217},
    {40,   36,   32,   28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,
     -12,  -16,  -20,  -25,  -29,  -33,  -37,  -41,  -45,  -49,  -53,  -57,  -61,
     -65,  -69,  -73,  -77,  -81,  -85,  -90,  -94,  -98,  -102, -106, -110, -114,
     -118, -122, -126, -130, -134, -138, -142, -146, -150, -155, -159, -163, -167,
     -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -216},
    {41,   37,   33,   29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,
     -11,  -15,  -19,  -24,  -28,  -32,  -36,  -40,  -44,  -48,  -52,  -56,  -60,
     -64,  -68,  -72,  -76,  -80,  -84,  -89,  -93,  -97,  -101, -105, -109, -113,
     -117, -121, -125, -129, -133, -137, -141, -145, -149, -154, -158, -162, -166,
     -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -215},
    {42,   38,   34,   30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,
     -10,  -14,  -18,  -23,  -27,  -31,  -35,  -39,  -43,  -47,  -51,  -55,  -59,
     -63,  -67,  -71,  -75,  -79,  -83,  -88,  -92,  -96,  -100, -104, -108, -112,
     -116, -120, -124, -128, -132, -136, -140, -144, -148, -153, -157, -161, -165,
     -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -214},
    {43,   39,   35,   31,   27,   23,   19,   15,   11,   7,    3,    -1,   -5,
     -9,   -13,  -17,  -22,  -26,  -30,  -34,  -38,  -42,  -46,  -50,  -54,  -58,
     -62,  -66,  -70,  -74,  -78,  -82,  -87,  -91,  -95,  -99,  -103, -107, -111,
     -115, -119, -123, -127, -131, -135, -139, -143, -147, -152, -156, -160, -164,
     -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -213},
    {44,   40,   36,   32,   28,   24,   20,   16,   12,   8,    4,    0,    -4,
     -8,   -12,  -16,  -21,  -25,  -29,  -33,  -37,  -41,  -45,  -49,  -53,  -57,
     -61,  -65,  -69,  -73,  -77,  -81,  -86,  -90,  -94,  -98,  -102, -106, -110,
     -114, -118, -122, -126, -130, -134, -138, -142, -146, -151, -155, -159, -163,
     -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -212},
    {45,   41,   37,   33,   29,   25,   21,   17,   13,   9,    5,    1,    -3,
     -7,   -11,  -15,  -20,  -24,  -28,  -32,  -36,  -40,  -44,  -48,  -52,  -56,
     -60,  -64,  -68,  -72,  -76,  -80,  -85,  -89,  -93,  -97,  -101, -105, -109,
     -113, -117, -121, -125, -129, -133, -137, -141, -145, -150, -154, -158, -162,
     -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -211},
    {46,   42,   38,   34,   30,   26,   22,   18,   14,   10,   6,    2,    -2,
     -6,   -10,  -14,  -19,  -23,  -27,  -31,  -35,  -39,  -43,  -47,  -51,  -55,
     -59,  -63,  -67,  -71,  -75,  -79,  -84,  -88,  -92,  -96,  -100, -104, -108,
     -112, -116, -120, -124, -128, -132, -136, -140, -144, -149, -153, -157, -161,
     -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -210},
    {47,   43,   39,   35,   31,   27,   23,   19,   15,   11,   7,    3,    -1,
     -5,   -9,   -13,  -18,  -22,  -26,  -30,  -34,  -38,  -42,  -46,  -50,  -54,
     -58,  -62,  -66,  -70,  -74,  -78,  -83,  -87,  -91,  -95,  -99,  -103, -107,
     -111, -115, -119, -123, -127, -131, -135, -139, -143, -148, -152, -156, -160,
     -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -209},
    {48,   44,   40,   36,   32,   28,   24,   20,   16,   12,   8,    4,    0,
     -4,   -8,   -12,  -17,  -21,  -25,  -29,  -33,  -37,  -41,  -45,  -49,  -53,
     -57,  -61,  -65,  -69,  -73,  -77,  -82,  -86,  -90,  -94,  -98,  -102, -106,
     -110, -114, -118, -122, -126, -130, -134, -138, -142, -147, -151, -155, -159,
     -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -208},
    {49,   45,   41,   37,   33,   29,   25,   21,   17,   13,   9,    5,    1,
     -3,   -7,   -11,  -16,  -20,  -24,  -28,  -32,  -36,  -40,  -44,  -48,  -52,
     -56,  -60,  -64,  -68,  -72,  -76,  -81,  -85,  -89,  -93,  -97,  -101, -105,
     -109, -113, -117, -121, -125, -129, -133, -137, -141, -146, -150, -154, -158,
     -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -207},
    {50,   46,   42,   38,   34,   30,   26,   22,   18,   14,   10,   6,    2,
     -2,   -6,   -10,  -15,  -19,  -23,  -27,  -31,  -35,  -39,  -43,  -47,  -51,
     -55,  -59,  -63,  -67,  -71,  -75,  -80,  -84,  -88,  -92,  -96,  -100, -104,
     -108, -112, -116, -120, -124, -128, -132, -136, -140, -145, -149, -153, -157,
     -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -206},
    {51,   47,   43,   39,   35,   31,   27,   23,   19,   15,   11,   7,    3,
     -1,   -5,   -9,   -14,  -18,  -22,  -26,  -30,  -34,  -38,  -42,  -46,  -50,
     -54,  -58,  -62,  -66,  -70,  -74,  -79,  -83,  -87,  -91,  -95,  -99,  -103,
     -107, -111, -115, -119, -123, -127, -131, -135, -139, -144, -148, -152, -156,
     -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -205},
    {52,   48,   44,   40,   36,   32,   28,   24,   20,   16,   12,   8,    4,
     0,    -4,   -8,   -13,  -17,  -21,  -25,  -29,  -33,  -37,  -41,  -45,  -49,
     -53,  -57,  -61,  -65,  -69,  -73,  -78,  -82,  -86,  -90,  -94,  -98,  -102,
     -106, -110, -114, -118, -122, -126, -130, -134, -138, -143, -147, -151, -155,
     -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -204},
    {53,   49,   45,   41,   37,   33,   29,   25,   21,   17,   13,   9,    5,
     1,    -3,   -7,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,  -44,  -48,
     -52,  -56,  -60,  -64,  -68,  -72,  -77,  -81,  -85,  -89,  -93,  -97,  -101,
     -105, -109, -113, -117, -121, -125, -129, -133, -137, -142, -146, -150, -154,
     -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -203},
    {54,   50,   46,   42,   38,   34,   30,   26,   22,   18,   14,   10,   6,
     2,    -2,   -6,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,  -43,  -47,
     -51,  -55,  -59,  -63,  -67,  -71,  -76,  -80,  -84,  -88,  -92,  -96,  -100,
     -104, -108, -112, -116, -120, -124, -128, -132, -136, -141, -145, -149, -153,
     -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -202},
    {55,   51,   47,   43,   39,   35,   31,   27,   23,   19,   15,   11,   7,
     3,    -1,   -5,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,  -42,  -46,
     -50,  -54,  -58,  -62,  -66,  -70,  -75,  -79,  -83,  -87,  -91,  -95,  -99,
     -103, -107, -111, -115, -119, -123, -127, -131, -135, -140, -144, -148, -152,
     -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -201},
    {56,   52,   48,   44,   40,   36,   32,   28,   24,   20,   16,   12,   8,
     4,    0,    -4,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,  -41,  -45,
     -49,  -53,  -57,  -61,  -65,  -69,  -74,  -78,  -82,  -86,  -90,  -94,  -98,
     -102, -106, -110, -114, -118, -122, -126, -130, -134, -139, -143, -147, -151,
     -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -200},
    {57,   53,   49,   45,   41,   37,   33,   29,   25,   21,   17,   13,   9,
     5,    1,    -3,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,  -44,
     -48,  -52,  -56,  -60,  -64,  -68,  -73,  -77,  -81,  -85,  -89,  -93,  -97,
     -101, -105, -109, -113, -117, -121, -125, -129, -133, -138, -142, -146, -150,
     -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -199},
    {58,   54,   50,   46,   42,   38,   34,   30,   26,   22,   18,   14,   10,
     6,    2,    -2,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,  -43,
     -47,  -51,  -55,  -59,  -63,  -67,  -72,  -76,  -80,  -84,  -88,  -92,  -96,
     -100, -104, -108, -112, -116, -120, -124, -128, -132, -137, -141, -145, -149,
     -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -198},
    {59,   55,   51,   47,   43,   39,   35,   31,   27,   23,   19,   15,   11,
     7,    3,    -1,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,  -42,
     -46,  -50,  -54,  -58,  -62,  -66,  -71,  -75,  -79,  -83,  -87,  -91,  -95,
     -99,  -103, -107, -111, -115, -119, -123, -127, -131, -136, -140, -144, -148,
     -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -197},
    {60,   56,   52,   48,   44,   40,   36,   32,   28,   24,   20,   16,   12,
     8,    4,    0,    -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,  -41,
     -45,  -49,  -53,  -57,  -61,  -65,  -70,  -74,  -78,  -82,  -86,  -90,  -94,
     -98,  -102, -106, -110, -114, -118, -122, -126, -130, -135, -139, -143, -147,
     -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -196},
    {61,   57,   53,   49,   45,   41,   37,   33,   29,   25,   21,   17,   13,
     9,    5,    1,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,  -40,
     -44,  -48,  -52,  -56,  -60,  -64,  -69,  -73,  -77,  -81,  -85,  -89,  -93,
     -97,  -101, -105, -109, -113, -117, -121, -125, -129, -134, -138, -142, -146,
     -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -195},
    {62,   58,   54,   50,   46,   42,   38,   34,   30,   26,   22,   18,   14,
     10,   6,    2,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,  -39,
     -43,  -47,  -51,  -55,  -59,  -63,  -68,  -72,  -76,  -80,  -84,  -88,  -92,
     -96,  -100, -104, -108, -112, -116, -120, -124, -128, -133, -137, -141, -145,
     -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -194},
    {63,   59,   55,   51,   47,   43,   39,   35,   31,   27,   23,   19,   15,
     11,   7,    3,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,  -38,
     -42,  -46,  -50,  -54,  -58,  -62,  -67,  -71,  -75,  -79,  -83,  -87,  -91,
     -95,  -99,  -103, -107, -111, -115, -119, -123, -127, -132, -136, -140, -144,
     -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -193},
    {64,   60,   56,   52,   48,   44,   40,   36,   32,   28,   24,   20,   16,
     12,   8,    4,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,  -37,
     -41,  -45,  -49,  -53,  -57,  -61,  -66,  -70,  -74,  -78,  -82,  -86,  -90,
     -94,  -98,  -102, -106, -110, -114, -118, -122, -126, -131, -135, -139, -143,
     -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -192},
    {65,   61,   57,   53,   49,   45,   41,   37,   33,   29,   25,   21,   17,
     13,   9,    5,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,  -36,
     -40,  -44,  -48,  -52,  -56,  -60,  -65,  -69,  -73,  -77,  -81,  -85,  -89,
     -93,  -97,  -101, -105, -109, -113, -117, -121, -125, -130, -134, -138, -142,
     -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -191},
    {66,   62,   58,   54,   50,   46,   42,   38,   34,   30,   26,   22,   18,
     14,   10,   6,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,  -35,
     -39,  -43,  -47,  -51,  -55,  -59,  -64,  -68,  -72,  -76,  -80,  -84,  -88,
     -92,  -96,  -100, -104, -108, -112, -116, -120, -124, -129, -133, -137, -141,
     -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -190},
    {67,   63,   59,   55,   51,   47,   43,   39,   35,   31,   27,   23,   19,
     15,   11,   7,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,  -34,
     -38,  -42,  -46,  -50,  -54,  -58,  -63,  -67,  -71,  -75,  -79,  -83,  -87,
     -91,  -95,  -99,  -103, -107, -111, -115, -119, -123, -128, -132, -136, -140,
     -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -189},
    {68,   64,   60,   56,   52,   48,   44,   40,   36,   32,   28,   24,   20,
     16,   12,   8,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,  -33,
     -37,  -41,  -45,  -49,  -53,  -57,  -62,  -66,  -70,  -74,  -78,  -82,  -86,
     -90,  -94,  -98,  -102, -106, -110, -114, -118, -122, -127, -131, -135, -139,
     -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -188},
    {69,   65,   61,   57,   53,   49,   45,   41,   37,   33,   29,   25,   21,
     17,   13,   9,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,  -32,
     -36,  -40,  -44,  -48,  -52,  -56,  -61,  -65,  -69,  -73,  -77,  -81,  -85,
     -89,  -93,  -97,  -101, -105, -109, -113, -117, -121, -126, -130, -134, -138,
     -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -187},
    {70,   66,   62,   58,   54,   50,   46,   42,   38,   34,   30,   26,   22,
     18,   14,   10,   5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,  -31,
     -35,  -39,  -43,  -47,  -51,  -55,  -60,  -64,  -68,  -72,  -76,  -80,  -84,
     -88,  -92,  -96,  -100, -104, -108, -112, -116, -120, -125, -129, -133, -137,
     -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -186},
    {71,   67,   63,   59,   55,   51,   47,   43,   39,   35,   31,   27,   23,
     19,   15,   11,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,  -30,
     -34,  -38,  -42,  -46,  -50,  -54,  -59,  -63,  -67,  -71,  -75,  -79,  -83,
     -87,  -91,  -95,  -99,  -103, -107, -111, -115, -119, -124, -128, -132, -136,
     -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -185},
    {72,   68,   64,   60,   56,   52,   48,   44,   40,   36,   32,   28,   24,
     20,   16,   12,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,
     -33,  -37,  -41,  -45,  -49,  -53,  -58,  -62,  -66,  -70,  -74,  -78,  -82,
     -86,  -90,  -94,  -98,  -102, -106, -110, -114, -118, -123, -127, -131, -135,
     -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -184},
    {73,   69,   65,   61,   57,   53,   49,   45,   41,   37,   33,   29,   25,
     21,   17,   13,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,
     -32,  -36,  -40,  -44,  -48,  -52,  -57,  -61,  -65,  -69,  -73,  -77,  -81,
     -85,  -89,  -93,  -97,  -101, -105, -109, -113, -117, -122, -126, -130, -134,
     -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -183},
    {74,   70,   66,   62,   58,   54,   50,   46,   42,   38,   34,   30,   26,
     22,   18,   14,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,
     -31,  -35,  -39,  -43,  -47,  -51,  -56,  -60,  -64,  -68,  -72,  -76,  -80,
     -84,  -88,  -92,  -96,  -100, -104, -108, -112, -116, -121, -125, -129, -133,
     -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -182},
    {75,   71,   67,   63,   59,   55,   51,   47,   43,   39,   35,   31,   27,
     23,   19,   15,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,
     -30,  -34,  -38,  -42,  -46,  -50,  -55,  -59,  -63,  -67,  -71,  -75,  -79,
     -83,  -87,  -91,  -95,  -99,  -103, -107, -111, -115, -120, -124, -128, -132,
     -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -181},
    {76,   72,   68,   64,   60,   56,   52,   48,   44,   40,   36,   32,   28,
     24,   20,   16,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,
     -29,  -33,  -37,  -41,  -45,  -49,  -54,  -58,  -62,  -66,  -70,  -74,  -78,
     -82,  -86,  -90,  -94,  -98,  -102, -106, -110, -114, -119, -123, -127, -131,
     -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -180},
    {77,   73,   69,   65,   61,   57,   53,   49,   45,   41,   37,   33,   29,
     25,   21,   17,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,
     -28,  -32,  -36,  -40,  -44,  -48,  -53,  -57,  -61,  -65,  -69,  -73,  -77,
     -81,  -85,  -89,  -93,  -97,  -101, -105, -109, -113, -118, -122, -126, -130,
     -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -179},
    {78,   74,   70,   66,   62,   58,   54,   50,   46,   42,   38,   34,   30,
     26,   22,   18,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,
     -27,  -31,  -35,  -39,  -43,  -47,  -52,  -56,  -60,  -64,  -68,  -72,  -76,
     -80,  -84,  -88,  -92,  -96,  -100, -104, -108, -112, -117, -121, -125, -129,
     -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -178},
    {79,   75,   71,   67,   63,   59,   55,   51,   47,   43,   39,   35,   31,
     27,   23,   19,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,
     -26,  -30,  -34,  -38,  -42,  -46,  -51,  -55,  -59,  -63,  -67,  -71,  -75,
     -79,  -83,  -87,  -91,  -95,  -99,  -103, -107, -111, -116, -120, -124, -128,
     -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -177},
    {80,   76,   72,   68,   64,   60,   56,   52,   48,   44,   40,   36,   32,
     28,   24,   20,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,
     -25,  -29,  -33,  -37,  -41,  -45,  -50,  -54,  -58,  -62,  -66,  -70,  -74,
     -78,  -82,  -86,  -90,  -94,  -98,  -102, -106, -110, -115, -119, -123, -127,
     -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -176},
    {81,   77,   73,   69,   65,   61,   57,   53,   49,   45,   41,   37,   33,
     29,   25,   21,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,
     -24,  -28,  -32,  -36,  -40,  -44,  -49,  -53,  -57,  -61,  -65,  -69,  -73,
     -77,  -81,  -85,  -89,  -93,  -97,  -101, -105, -109, -114, -118, -122, -126,
     -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -175},
    {82,   78,   74,   70,   66,   62,   58,   54,   50,   46,   42,   38,   34,
     30,   26,   22,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,
     -23,  -27,  -31,  -35,  -39,  -43,  -48,  -52,  -56,  -60,  -64,  -68,  -72,
     -76,  -80,  -84,  -88,  -92,  -96,  -100, -104, -108, -113, -117, -121, -125,
     -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -174},
    {83,   79,   75,   71,   67,   63,   59,   55,   51,   47,   43,   39,   35,
     31,   27,   23,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,
     -22,  -26,  -30,  -34,  -38,  -42,  -47,  -51,  -55,  -59,  -63,  -67,  -71,
     -75,  -79,  -83,  -87,  -91,  -95,  -99,  -103, -107, -112, -116, -120, -124,
     -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -173},
    {84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,   40,   36,
     32,   28,   24,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,
     -21,  -25,  -29,  -33,  -37,  -41,  -46,  -50,  -54,  -58,  -62,  -66,  -70,
     -74,  -78,  -82,  -86,  -90,  -94,  -98,  -102, -106, -111, -115, -119, -123,
     -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -172},
    {85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,   41,   37,
     33,   29,   25,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,
     -20,  -24,  -28,  -32,  -36,  -40,  -45,  -49,  -53,  -57,  -61,  -65,  -69,
     -73,  -77,  -81,  -85,  -89,  -93,  -97,  -101, -105, -110, -114, -118, -122,
     -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -171},
    {86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,   42,   38,
     34,   30,   26,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,
     -19,  -23,  -27,  -31,  -35,  -39,  -44,  -48,  -52,  -56,  -60,  -64,  -68,
     -72,  -76,  -80,  -84,  -88,  -92,  -96,  -100, -104, -109, -113, -117, -121,
     -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -170},
    {87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,   43,   39,
     35,   31,   27,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,
     -18,  -22,  -26,  -30,  -34,  -38,  -43,  -47,  -51,  -55,  -59,  -63,  -67,
     -71,  -75,  -79,  -83,  -87,  -91,  -95,  -99,  -103, -108, -112, -116, -120,
     -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -169},
    {88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,   40,
     36,   32,   28,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,
     -17,  -21,  -25,  -29,  -33,  -37,  -42,  -46,  -50,  -54,  -58,  -62,  -66,
     -70,  -74,  -78,  -82,  -86,  -90,  -94,  -98,  -102, -107, -111, -115, -119,
     -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -168},
    {89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,   41,
     37,   33,   29,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,
     -16,  -20,  -24,  -28,  -32,  -36,  -41,  -45,  -49,  -53,  -57,  -61,  -65,
     -69,  -73,  -77,  -81,  -85,  -89,  -93,  -97,  -101, -106, -110, -114, -118,
     -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -167},
    {90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,   42,
     38,   34,   30,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,
     -15,  -19,  -23,  -27,  -31,  -35,  -40,  -44,  -48,  -52,  -56,  -60,  -64,
     -68,  -72,  -76,  -80,  -84,  -88,  -92,  -96,  -100, -105, -109, -113, -117,
     -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -166},
    {91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,   43,
     39,   35,   31,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,
     -14,  -18,  -22,  -26,  -30,  -34,  -39,  -43,  -47,  -51,  -55,  -59,  -63,
     -67,  -71,  -75,  -79,  -83,  -87,  -91,  -95,  -99,  -104, -108, -112, -116,
     -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -165},
    {92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,
     40,   36,   32,   27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,
     -13,  -17,  -21,  -25,  -29,  -33,  -38,  -42,  -46,  -50,  -54,  -58,  -62,
     -66,  -70,  -74,  -78,  -82,  -86,  -90,  -94,  -98,  -103, -107, -111, -115,
     -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -164},
    {93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,
     41,   37,   33,   28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,
     -12,  -16,  -20,  -24,  -28,  -32,  -37,  -41,  -45,  -49,  -53,  -57,  -61,
     -65,  -69,  -73,  -77,  -81,  -85,  -89,  -93,  -97,  -102, -106, -110, -114,
     -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -163},
    {94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,
     42,   38,   34,   29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,
     -11,  -15,  -19,  -23,  -27,  -31,  -36,  -40,  -44,  -48,  -52,  -56,  -60,
     -64,  -68,  -72,  -76,  -80,  -84,  -88,  -92,  -96,  -101, -105, -109, -113,
     -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -162},
    {95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,
     43,   39,   35,   30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,
     -10,  -14,  -18,  -22,  -26,  -30,  -35,  -39,  -43,  -47,  -51,  -55,  -59,
     -63,  -67,  -71,  -75,  -79,  -83,  -87,  -91,  -95,  -100, -104, -108, -112,
     -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -161},
    {96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,   40,   36,
     31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,  -29,
     -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,  -90,  -94,
     -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -160},
    {97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,   41,   37,
     32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,  -28,
     -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,  -89,  -93,
     -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -159},
    {98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,   42,   38,
     33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,  -27,
     -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,  -88,  -92,
     -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -158},
    {99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,   43,   39,
     34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,  -26,
     -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,  -87,  -91,
     -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -157},
    {100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,   40,
     35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,  -25,
     -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,  -90,
     -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -156},
    {101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,   41,
     36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,  -24,
     -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,  -89,
     -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -155},
    {102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,   42,
     37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,  -23,
     -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,  -88,
     -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -154},
    {103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,   43,
     38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,  -22,
     -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,  -87,
     -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -153},
    {104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,   44,
     39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,  -21,
     -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,  -86,
     -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -152},
    {105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,   45,
     40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,  -20,
     -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,  -85,
     -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -151},
    {106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,   46,
     41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,  -19,
     -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,  -84,
     -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -150},
    {107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,   47,
     42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,  -18,
     -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,  -83,
     -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -149},
    {108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,   48,
     43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,  -17,
     -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,  -82,
     -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -148},
    {109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,   49,
     44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,  -16,
     -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,  -81,
     -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -147},
    {110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,   50,
     45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,  -15,
     -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,  -80,
     -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -146},
    {111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,   51,
     46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,  -14,
     -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,  -79,
     -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -145},
    {112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,   52,
     47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,   -13,
     -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,  -78,
     -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -144},
    {113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,   53,
     48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,   -12,
     -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,  -77,
     -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -143},
    {114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,   54,
     49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,   -11,
     -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,  -76,
     -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -142},
    {115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,   55,
     50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,   -10,
     -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,  -75,
     -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -141},
    {116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,   56,
     51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,   -9,
     -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,  -74,
     -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -140},
    {117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,   57,
     52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,   -8,
     -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,  -73,
     -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -139},
    {118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,   58,
     53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,   -7,
     -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,  -72,
     -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -138},
    {119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,   59,
     54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,   -6,
     -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,  -71,
     -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -137},
    {120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,   60,
     55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,   -5,
     -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,  -70,
     -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -136},
    {121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,   61,
     56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,    -4,
     -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,  -69,
     -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -135},
    {122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,   62,
     57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,    -3,
     -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,  -68,
     -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -134},
    {123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,   63,
     58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,    -2,
     -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,  -67,
     -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -133},
    {124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,   64,
     59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,    -1,
     -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,  -66,
     -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -132},
    {125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,   65,
     60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,    0,
     -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,  -65,
     -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -131},
    {126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,   66,
     61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,    1,
     -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,  -64,
     -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -130},
    {127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,   67,
     62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,    2,
     -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,  -63,
     -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -129},
    {128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,   68,
     63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,    3,
     -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,  -62,
     -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -128},
    {129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,   69,
     64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,    4,
     -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,  -61,
     -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -127},
    {130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,   70,
     65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,    5,
     0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,  -60,
     -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -126},
    {131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,   71,
     66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,   6,
     1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,  -59,
     -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -125},
    {132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,   72,
     67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,   7,
     2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,  -58,
     -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -124},
    {133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,   73,
     68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,   8,
     3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,  -57,
     -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -123},
    {134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,   74,
     69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,   9,
     4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,  -56,
     -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -122},
    {135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,   75,
     70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,   10,
     5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,  -55,
     -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -121},
    {136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,   76,
     71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,   11,
     6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,  -54,
     -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -120},
    {137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,   77,
     72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,   12,
     7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,  -53,
     -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -119},
    {138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,   78,
     73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,   13,
     8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,  -52,
     -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -118},
    {139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,   79,
     74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,   14,
     9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,  -51,
     -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -117},
    {140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,   80,
     75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,   15,
     10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,  -50,
     -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -116},
    {141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,   81,
     76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,   16,
     11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,  -49,
     -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -115},
    {142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,   82,
     77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,   17,
     12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,  -48,
     -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -114},
    {143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,   83,
     78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,   18,
     13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,  -47,
     -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -113},
    {144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,   84,
     79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,   19,
     14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,  -46,
     -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -112},
    {145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,   85,
     80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,   20,
     15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,  -45,
     -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -111},
    {146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,   86,
     81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,   21,
     16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,  -44,
     -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -110},
    {147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,   87,
     82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,   22,
     17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,  -43,
     -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -109},
    {148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,   88,
     83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,   23,
     18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,  -42,
     -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -108},
    {149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,   89,
     84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,   24,
     19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,  -41,
     -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -107},
    {150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,   90,
     85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,   25,
     20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,  -40,
     -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -106},
    {151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,   91,
     86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,   26,
     21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,  -39,
     -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -105},
    {152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,
     87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,
     22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38,
     -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -104},
    {153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,
     88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,
     23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37,
     -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -103},
    {154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,
     89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,
     24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36,
     -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -102},
    {155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,
     90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,
     25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35,
     -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -101},
    {156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
     91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,
     26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34,
     -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -100},
    {157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
     92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,
     27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33,
     -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -99},
    {158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
     93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,
     28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32,
     -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -98},
    {159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
     94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,
     29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31,
     -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -97},
    {160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
     95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,
     30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30,
     -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -96},
    {161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
     96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,
     31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29,
     -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -95},
    {162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
     97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,
     32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28,
     -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -94},
    {163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
     98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,
     33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27,
     -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -93},
    {164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
     99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,
     34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26,
     -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -92},
    {165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
     100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,
     35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25,
     -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -91},
    {166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
     101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,
     36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24,
     -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -90},
    {167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
     102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,
     37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23,
     -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -89},
    {168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
     103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,
     38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22,
     -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -88},
    {169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
     104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,
     39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21,
     -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -87},
    {170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110,
     105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,
     40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20,
     -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -86},
    {171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111,
     106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,
     41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19,
     -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -85},
    {172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112,
     107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,
     42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18,
     -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -84},
    {173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113,
     108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,
     43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17,
     -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -83},
    {174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114,
     109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,
     44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16,
     -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -82},
    {175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115,
     110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,
     45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15,
     -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -81},
    {176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116,
     111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,
     46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14,
     -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -80},
    {177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117,
     112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,
     47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13,
     -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -79},
    {178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118,
     113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,
     48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12,
     -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -78},
    {179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119,
     114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,
     49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11,
     -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -77},
    {180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120,
     115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,
     50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10,
     -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -76},
    {181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121,
     116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,
     51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,
     -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -75},
    {182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122,
     117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,
     52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,
     -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -74},
    {183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123,
     118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,
     53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,
     -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -73},
    {184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124,
     119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,
     54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,
     -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -72},
    {185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125,
     120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,
     55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,
     -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -71},
    {186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126,
     121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,
     56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,
     -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -70},
    {187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127,
     122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,
     57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,
     -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -69},
    {188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128,
     123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,
     58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,
     -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -68},
    {189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129,
     124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,
     59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,
     -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -67},
    {190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130,
     125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,
     60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,
     -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -66},
    {191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131,
     126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,
     61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,
     -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65},
    {192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132,
     127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,
     62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,
     -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64},
    {193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133,
     128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,
     63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,
     -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63},
    {194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134,
     129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,
     64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,
     -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62},
    {195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135,
     130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,
     65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,
     0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61},
    {196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136,
     131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,
     66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,
     1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60},
    {197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137,
     132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,
     67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,
     2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59},
    {198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138,
     133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,
     68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,
     3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58},
    {199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139,
     134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,
     69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,
     4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57},
    {200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140,
     135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,
     70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,
     5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56},
    {201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141,
     136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,
     71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,
     6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55},
    {202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142,
     137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,
     72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,
     7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54},
    {203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143,
     138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,
     73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,
     8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53},
    {204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144,
     139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,
     74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,
     9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52},
    {205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145,
     140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,
     75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,
     10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51},
    {206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146,
     141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,
     76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,
     11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -45, -50},
    {207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147,
     142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,
     77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,
     12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -44, -49},
    {208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148,
     143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,
     78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,
     13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -43, -48},
    {209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149,
     144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,
     79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,
     14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -42, -47},
    {210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150,
     145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,
     80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,
     15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -41, -46},
    {211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151,
     146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,
     81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,
     16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -40, -45},
    {212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152,
     147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,
     82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,
     17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -39, -44},
    {213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153,
     148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,
     83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,
     18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -38, -43},
    {214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154,
     149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,
     84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,
     19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -37, -42},
    {215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155,
     150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,
     85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,
     20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -36, -41},
    {216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156,
     151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,
     86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,
     21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -35, -40},
    {217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157,
     152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,
     87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,
     22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -34, -39},
    {218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158,
     153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,
     88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,
     23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -33, -38},
    {219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159,
     154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,
     89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,
     24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -32, -37},
    {220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160,
     155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,
     90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,
     25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -31, -36},
    {221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161,
     156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
     91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,
     26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -30, -35},
    {222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162,
     157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
     92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,
     27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -29, -34},
    {223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163,
     158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
     93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,
     28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -28, -33},
    {224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164,
     159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
     94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,
     29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -27, -32},
    {225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165,
     160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
     95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,
     30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -26, -31},
    {226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166,
     161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
     96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,
     31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -25, -30},
    {227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167,
     162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
     97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,
     32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -24, -29},
    {228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168,
     163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
     98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,
     33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -23, -28},
    {229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169,
     164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
     99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,
     34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -22, -27},
    {230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170,
     165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
     100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,
     35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -21, -26},
    {231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171,
     166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
     101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,
     36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -20, -25},
    {232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172,
     167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
     102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,
     37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -19, -24},
    {233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173,
     168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
     103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,
     38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -18, -23},
    {234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174,
     169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
     104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,
     39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -17, -22},
    {235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175,
     170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110,
     105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,
     40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -16, -21},
    {236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176,
     171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111,
     106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,
     41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -15, -20},
    {237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177,
     172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112,
     107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,
     42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -14, -19},
    {238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178,
     173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113,
     108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,
     43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -13, -18},
    {239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179,
     174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114,
     109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,
     44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -12, -17},
    {240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180,
     175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115,
     110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,
     45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -11, -16},
    {241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181,
     176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116,
     111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,
     46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -10, -15},
    {242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182,
     177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117,
     112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,
     47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -9,  -14},
    {243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183,
     178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118,
     113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,
     48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -8,  -13},
    {244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184,
     179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119,
     114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,
     49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -7,  -12},
    {245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185,
     180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120,
     115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,
     50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -6,  -11},
    {246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186,
     181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121,
     116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,
     51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -5,  -10},
    {247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187,
     182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122,
     117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,
     52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -4,  -9},
    {248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188,
     183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123,
     118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,
     53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -3,  -8},
    {249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189,
     184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124,
     119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,
     54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -2,  -7},
    {250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190,
     185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125,
     120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,
     55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -1,  -6},
    {251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191,
     186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126,
     121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,
     56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   0,   -5},
    {252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192,
     187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127,
     122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,
     57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   1,   -4},
    {253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193,
     188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128,
     123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,
     58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   2,   -3},
    {254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194,
     189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129,
     124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,
     59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   3,   -2},
    {255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195,
     190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130,
     125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,  65,
     60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   4,   -1},
    {256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196,
     191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131,
     126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,  66,
     61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   5,   0},
    {257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197,
     192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132,
     127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,  67,
     62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  6,   1},
    {258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198,
     193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133,
     128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,  68,
     63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  7,   2},
    {259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199,
     194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134,
     129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,  69,
     64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  8,   3},
    {260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200,
     195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135,
     130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,  70,
     65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  9,   4},
    {261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201,
     196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136,
     131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,  71,
     66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  10,  5},
    {262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202,
     197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137,
     132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,  72,
     67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  11,  6},
    {263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203,
     198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138,
     133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,  73,
     68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  12,  7},
    {264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204,
     199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139,
     134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,  74,
     69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  13,  8},
    {265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205,
     200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140,
     135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,  75,
     70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  14,  9},
    {266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206,
     201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141,
     136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,  76,
     71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  15,  10},
    {267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207,
     202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142,
     137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,  77,
     72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  16,  11},
    {268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208,
     203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143,
     138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,  78,
     73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  17,  12},
    {269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209,
     204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144,
     139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,  79,
     74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  18,  13},
    {270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210,
     205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145,
     140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,  80,
     75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  19,  14},
    {271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211,
     206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146,
     141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,  81,
     76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  20,  15},
    {272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212,
     207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147,
     142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,  82,
     77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  21,  16},
    {273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213,
     208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148,
     143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,  83,
     78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  22,  17},
    {274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214,
     209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149,
     144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,  84,
     79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  23,  18},
    {275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215,
     210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150,
     145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,  85,
     80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  24,  19},
    {276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216,
     211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151,
     146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,  86,
     81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  25,  20},
    {277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217,
     212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152,
     147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,  87,
     82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  26,  21},
    {278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218,
     213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153,
     148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,  88,
     83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  27,  22},
    {279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219,
     214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154,
     149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,  89,
     84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  28,  23},
    {280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220,
     215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155,
     150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,  90,
     85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  29,  24},
    {281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221,
     216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156,
     151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,  91,
     86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  30,  25},
    {282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222,
     217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157,
     152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,  92,
     87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  31,  26},
    {283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223,
     218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158,
     153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,  93,
     88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  32,  27},
    {284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224,
     219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159,
     154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,  94,
     89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  33,  28},
    {285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225,
     220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160,
     155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,  95,
     90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  34,  29},
    {286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226,
     221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161,
     156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
     91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  35,  30},
    {287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227,
     222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162,
     157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
     92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  36,  31},
    {288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228,
     223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163,
     158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
     93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  37,  32},
    {289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229,
     224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164,
     159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
     94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  38,  33},
    {290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230,
     225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165,
     160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
     95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  39,  34},
    {291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231,
     226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166,
     161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
     96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  40,  35},
    {292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232,
     227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167,
     162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
     97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  41,  36},
    {293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233,
     228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168,
     163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
     98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  42,  37},
    {294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234,
     229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169,
     164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
     99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  43,  38},
    {295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235,
     230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170,
     165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
     100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  44,  39},
    {296, 292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236,
     231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171,
     166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
     101, 97,  93,  89,  85,  81,  77,  73,  69,  65,  61,  57,  53,  49,  45,  40},
    {297, 293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237,
     232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172,
     167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
     102, 98,  94,  90,  86,  82,  78,  74,  70,  66,  62,  58,  54,  50,  46,  41},
    {298, 294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238,
     233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173,
     168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
     103, 99,  95,  91,  87,  83,  79,  75,  71,  67,  63,  59,  55,  51,  47,  42},
    {299, 295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239,
     234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174,
     169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
     104, 100, 96,  92,  88,  84,  80,  76,  72,  68,  64,  60,  56,  52,  48,  43},
};

static void image_dither_set_rgb565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r,
                                          int32_t a) {
  *(uint16_t*)dst = r | (g << 5) | (b << 11);
}

static void image_dither_set_bgr565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r,
                                          int32_t a) {
  *(uint16_t*)dst = b | (g << 5) | (r << 11);
}

static void image_dither_set_bgra_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  dst[0] = r << 3;
  dst[1] = g << 2;
  dst[2] = b << 3;
  dst[3] = a;
}

static void image_dither_set_rgba_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
  dst[0] = b << 3;
  dst[1] = g << 2;
  dst[2] = r << 3;
  dst[3] = a;
}

static void image_dither_data_8888_to_565(uint8_t* src_data, uint8_t* dst_data,
                                          uint32_t src_line_width, uint32_t dst_line_width,
                                          uint32_t src_bpp, uint32_t dst_bpp, uint32_t w,
                                          uint32_t h, set_dst_data_func_t set_dst_data) {
  rgba_t err;
  rgba_t err_1;
  int32_t x = 0;
  int32_t y = 0;
  uint8_t* dst = dst_data;
  uint8_t* src = src_data;

  int32_t rB = 0, rG = 0, rR = 0;
  int32_t cB = 0, cG = 0, cR = 0, cA = 0;

  rgba_t* _line_err = TKMEM_ZALLOCN(rgba_t, w + 2);
  rgba_t* line_err = &_line_err[1];

  for (y = 0; y < h; y++) {
    memset(&err, 0x0, sizeof(rgba_t));
    memset(&err_1, 0x0, sizeof(rgba_t));
    line_err[-1].b = 0;
    line_err[-1].g = 0;
    line_err[-1].r = 0;
    for (x = 0; x < w; x++) {
      if (src_bpp == 3 || (src_bpp == 4 && src[3] > 0)) {
        cB = src[0] + (((err.b << 1) + line_err[x].b + err_1.b) >> 2);
        cG = src[1] + (((err.g << 1) + line_err[x].g + err_1.g) >> 2);
        cR = src[2] + (((err.r << 1) + line_err[x].r + err_1.r) >> 2);
        cA = src[3];

        rB = best_blue_table[cB];
        rG = best_greed_table[cG];
        rR = best_red_table[cR];
        set_dst_data(dst, rB, rG, rR, cA);

        err.b = error_blue_table[cB][rB];
        err.g = error_greed_table[cG][rG];
        err.r = error_red_table[cR][rR];
      } else {
        set_dst_data(dst, 0, 0, 0, 0);

        err.b = 0;
        err.g = 0;
        err.r = 0;
      }

      err_1.b = line_err[x - 1].b;
      err_1.g = line_err[x - 1].g;
      err_1.r = line_err[x - 1].r;

      line_err[x - 1].b += err.b;
      line_err[x - 1].g += err.g;
      line_err[x - 1].r += err.r;

      line_err[x].b = err.b;
      line_err[x].g = err.g;
      line_err[x].r = err.r;

      src += src_bpp;
      dst += dst_bpp;
    }
  }

  TKMEM_FREE(_line_err);
}

static uint8_t* image_dither_convert_2_to_4(uint8_t* src, uint32_t w, uint32_t h) {
  uint32_t i = 0;
  uint8_t* s = src;
  uint8_t* d = NULL;
  uint8_t* data = NULL;
  uint32_t size = w * h;
  return_value_if_fail(src != NULL, NULL);

  data = TKMEM_ALLOC(size * 4);
  return_value_if_fail(data != NULL, NULL);

  d = data;
  for (i = 0; i < size; i++) {
    d[0] = s[0];
    d[1] = s[0];
    d[2] = s[0];
    d[3] = s[1];

    d += 4;
    s += 2;
  }

  return data;
}

ret_t image_dither_load_image(const uint8_t* buff, uint32_t buff_size, bitmap_t* image,
                              bitmap_format_t bitmap_format) {
  int w = 0;
  int h = 0;
  int n = 0;
  ret_t ret = RET_FAIL;
  uint8_t* data = NULL;
  uint8_t* stb_data = stbi_load_from_memory(buff, buff_size, &w, &h, &n, 0);
  return_value_if_fail(stb_data != NULL, RET_FAIL);

  if (n == 2) {
    n = 4;
    data = image_dither_convert_2_to_4(stb_data, w, h);
  } else {
    data = TKMEM_ZALLOCN(uint8_t, w * h * n);
    image_dither_data_8888_to_565(stb_data, data, w * n, w * n, n, n, w, h,
                                  image_dither_set_rgba_color);
  }

  ret = bitmap_init_from_rgba(image, w, h, bitmap_format, data, n);

  stbi_image_free((uint8_t*)(stb_data));

  return ret;
}

ret_t image_dither_image_wirte_png_file(const char* output_file, bitmap_t* bitmap) {
  return bitmap_save_png(bitmap, output_file);
}
